diff options
author | Matt Fleming <matt.fleming@intel.com> | 2015-10-05 10:40:20 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-10-05 15:55:43 -0400 |
commit | d8b167f9d8af817073ee35cf904e2e527465dbc1 (patch) | |
tree | cb7a68e763eee2c7d1796151738e53c597860b39 /tools/perf/arch | |
parent | 31b6753f95320260b160935d0e9c0b29f096ab57 (diff) |
perf tests: Move x86 tests into arch directory
Move out the x86-specific tests into tools/perf/arch/x86/tests and
define an 'arch_tests' array, which is the list of tests that only apply
to the build architecture.
We can also now begin to get rid of some of the #ifdef code that is
present in the generic perf tests.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Kanaka Juvva <kanaka.d.juvva@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Vikas Shivappa <vikas.shivappa@intel.com>
Cc: Vince Weaver <vince@deater.net>
Link: http://lkml.kernel.org/n/tip-9s68h4ptg06ah0lgnjz55mqn@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/arch')
-rw-r--r-- | tools/perf/arch/x86/include/arch-tests.h | 12 | ||||
-rw-r--r-- | tools/perf/arch/x86/tests/Build | 3 | ||||
-rw-r--r-- | tools/perf/arch/x86/tests/arch-tests.c | 20 | ||||
-rw-r--r-- | tools/perf/arch/x86/tests/dwarf-unwind.c | 1 | ||||
-rw-r--r-- | tools/perf/arch/x86/tests/gen-insn-x86-dat.awk | 75 | ||||
-rwxr-xr-x | tools/perf/arch/x86/tests/gen-insn-x86-dat.sh | 43 | ||||
-rw-r--r-- | tools/perf/arch/x86/tests/insn-x86-dat-32.c | 658 | ||||
-rw-r--r-- | tools/perf/arch/x86/tests/insn-x86-dat-64.c | 768 | ||||
-rw-r--r-- | tools/perf/arch/x86/tests/insn-x86-dat-src.c | 877 | ||||
-rw-r--r-- | tools/perf/arch/x86/tests/insn-x86.c | 185 | ||||
-rw-r--r-- | tools/perf/arch/x86/tests/perf-time-to-tsc.c | 164 | ||||
-rw-r--r-- | tools/perf/arch/x86/tests/rdpmc.c | 174 |
12 files changed, 2980 insertions, 0 deletions
diff --git a/tools/perf/arch/x86/include/arch-tests.h b/tools/perf/arch/x86/include/arch-tests.h index 4bd41d8e1ca4..5927cf224325 100644 --- a/tools/perf/arch/x86/include/arch-tests.h +++ b/tools/perf/arch/x86/include/arch-tests.h | |||
@@ -1,6 +1,18 @@ | |||
1 | #ifndef ARCH_TESTS_H | 1 | #ifndef ARCH_TESTS_H |
2 | #define ARCH_TESTS_H | 2 | #define ARCH_TESTS_H |
3 | 3 | ||
4 | /* Tests */ | ||
5 | int test__rdpmc(void); | ||
6 | int test__perf_time_to_tsc(void); | ||
7 | int test__insn_x86(void); | ||
8 | |||
9 | #ifdef HAVE_DWARF_UNWIND_SUPPORT | ||
10 | struct thread; | ||
11 | struct perf_sample; | ||
12 | int test__arch_unwind_sample(struct perf_sample *sample, | ||
13 | struct thread *thread); | ||
14 | #endif | ||
15 | |||
4 | extern struct test arch_tests[]; | 16 | extern struct test arch_tests[]; |
5 | 17 | ||
6 | #endif | 18 | #endif |
diff --git a/tools/perf/arch/x86/tests/Build b/tools/perf/arch/x86/tests/Build index d827ef384b33..8e2c5a38c3b9 100644 --- a/tools/perf/arch/x86/tests/Build +++ b/tools/perf/arch/x86/tests/Build | |||
@@ -2,3 +2,6 @@ libperf-$(CONFIG_DWARF_UNWIND) += regs_load.o | |||
2 | libperf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o | 2 | libperf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o |
3 | 3 | ||
4 | libperf-y += arch-tests.o | 4 | libperf-y += arch-tests.o |
5 | libperf-y += rdpmc.o | ||
6 | libperf-y += perf-time-to-tsc.o | ||
7 | libperf-$(CONFIG_AUXTRACE) += insn-x86.o | ||
diff --git a/tools/perf/arch/x86/tests/arch-tests.c b/tools/perf/arch/x86/tests/arch-tests.c index fca9eb9d39a2..d116c217af99 100644 --- a/tools/perf/arch/x86/tests/arch-tests.c +++ b/tools/perf/arch/x86/tests/arch-tests.c | |||
@@ -4,6 +4,26 @@ | |||
4 | 4 | ||
5 | struct test arch_tests[] = { | 5 | struct test arch_tests[] = { |
6 | { | 6 | { |
7 | .desc = "x86 rdpmc test", | ||
8 | .func = test__rdpmc, | ||
9 | }, | ||
10 | { | ||
11 | .desc = "Test converting perf time to TSC", | ||
12 | .func = test__perf_time_to_tsc, | ||
13 | }, | ||
14 | #ifdef HAVE_DWARF_UNWIND_SUPPORT | ||
15 | { | ||
16 | .desc = "Test dwarf unwind", | ||
17 | .func = test__dwarf_unwind, | ||
18 | }, | ||
19 | #endif | ||
20 | #ifdef HAVE_AUXTRACE_SUPPORT | ||
21 | { | ||
22 | .desc = "Test x86 instruction decoder - new instructions", | ||
23 | .func = test__insn_x86, | ||
24 | }, | ||
25 | #endif | ||
26 | { | ||
7 | .func = NULL, | 27 | .func = NULL, |
8 | }, | 28 | }, |
9 | 29 | ||
diff --git a/tools/perf/arch/x86/tests/dwarf-unwind.c b/tools/perf/arch/x86/tests/dwarf-unwind.c index d8bbf7ad1681..7f209ce827bf 100644 --- a/tools/perf/arch/x86/tests/dwarf-unwind.c +++ b/tools/perf/arch/x86/tests/dwarf-unwind.c | |||
@@ -5,6 +5,7 @@ | |||
5 | #include "event.h" | 5 | #include "event.h" |
6 | #include "debug.h" | 6 | #include "debug.h" |
7 | #include "tests/tests.h" | 7 | #include "tests/tests.h" |
8 | #include "arch-tests.h" | ||
8 | 9 | ||
9 | #define STACK_SIZE 8192 | 10 | #define STACK_SIZE 8192 |
10 | 11 | ||
diff --git a/tools/perf/arch/x86/tests/gen-insn-x86-dat.awk b/tools/perf/arch/x86/tests/gen-insn-x86-dat.awk new file mode 100644 index 000000000000..a21454835cd4 --- /dev/null +++ b/tools/perf/arch/x86/tests/gen-insn-x86-dat.awk | |||
@@ -0,0 +1,75 @@ | |||
1 | #!/bin/awk -f | ||
2 | # gen-insn-x86-dat.awk: script to convert data for the insn-x86 test | ||
3 | # Copyright (c) 2015, Intel Corporation. | ||
4 | # | ||
5 | # This program is free software; you can redistribute it and/or modify it | ||
6 | # under the terms and conditions of the GNU General Public License, | ||
7 | # version 2, as published by the Free Software Foundation. | ||
8 | # | ||
9 | # This program is distributed in the hope it will be useful, but WITHOUT | ||
10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
11 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
12 | # more details. | ||
13 | |||
14 | BEGIN { | ||
15 | print "/*" | ||
16 | print " * Generated by gen-insn-x86-dat.sh and gen-insn-x86-dat.awk" | ||
17 | print " * from insn-x86-dat-src.c for inclusion by insn-x86.c" | ||
18 | print " * Do not change this code." | ||
19 | print "*/\n" | ||
20 | op = "" | ||
21 | branch = "" | ||
22 | rel = 0 | ||
23 | going = 0 | ||
24 | } | ||
25 | |||
26 | / Start here / { | ||
27 | going = 1 | ||
28 | } | ||
29 | |||
30 | / Stop here / { | ||
31 | going = 0 | ||
32 | } | ||
33 | |||
34 | /^\s*[0-9a-fA-F]+\:/ { | ||
35 | if (going) { | ||
36 | colon_pos = index($0, ":") | ||
37 | useful_line = substr($0, colon_pos + 1) | ||
38 | first_pos = match(useful_line, "[0-9a-fA-F]") | ||
39 | useful_line = substr(useful_line, first_pos) | ||
40 | gsub("\t", "\\t", useful_line) | ||
41 | printf "{{" | ||
42 | len = 0 | ||
43 | for (i = 2; i <= NF; i++) { | ||
44 | if (match($i, "^[0-9a-fA-F][0-9a-fA-F]$")) { | ||
45 | printf "0x%s, ", $i | ||
46 | len += 1 | ||
47 | } else { | ||
48 | break | ||
49 | } | ||
50 | } | ||
51 | printf "}, %d, %s, \"%s\", \"%s\",", len, rel, op, branch | ||
52 | printf "\n\"%s\",},\n", useful_line | ||
53 | op = "" | ||
54 | branch = "" | ||
55 | rel = 0 | ||
56 | } | ||
57 | } | ||
58 | |||
59 | / Expecting: / { | ||
60 | expecting_str = " Expecting: " | ||
61 | expecting_len = length(expecting_str) | ||
62 | expecting_pos = index($0, expecting_str) | ||
63 | useful_line = substr($0, expecting_pos + expecting_len) | ||
64 | for (i = 1; i <= NF; i++) { | ||
65 | if ($i == "Expecting:") { | ||
66 | i++ | ||
67 | op = $i | ||
68 | i++ | ||
69 | branch = $i | ||
70 | i++ | ||
71 | rel = $i | ||
72 | break | ||
73 | } | ||
74 | } | ||
75 | } | ||
diff --git a/tools/perf/arch/x86/tests/gen-insn-x86-dat.sh b/tools/perf/arch/x86/tests/gen-insn-x86-dat.sh new file mode 100755 index 000000000000..2d4ef94cff98 --- /dev/null +++ b/tools/perf/arch/x86/tests/gen-insn-x86-dat.sh | |||
@@ -0,0 +1,43 @@ | |||
1 | #!/bin/sh | ||
2 | # gen-insn-x86-dat: generate data for the insn-x86 test | ||
3 | # Copyright (c) 2015, Intel Corporation. | ||
4 | # | ||
5 | # This program is free software; you can redistribute it and/or modify it | ||
6 | # under the terms and conditions of the GNU General Public License, | ||
7 | # version 2, as published by the Free Software Foundation. | ||
8 | # | ||
9 | # This program is distributed in the hope it will be useful, but WITHOUT | ||
10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
11 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
12 | # more details. | ||
13 | |||
14 | set -e | ||
15 | |||
16 | if [ "$(uname -m)" != "x86_64" ]; then | ||
17 | echo "ERROR: This script only works on x86_64" | ||
18 | exit 1 | ||
19 | fi | ||
20 | |||
21 | cd $(dirname $0) | ||
22 | |||
23 | trap 'echo "Might need a more recent version of binutils"' EXIT | ||
24 | |||
25 | echo "Compiling insn-x86-dat-src.c to 64-bit object" | ||
26 | |||
27 | gcc -g -c insn-x86-dat-src.c | ||
28 | |||
29 | objdump -dSw insn-x86-dat-src.o | awk -f gen-insn-x86-dat.awk > insn-x86-dat-64.c | ||
30 | |||
31 | rm -f insn-x86-dat-src.o | ||
32 | |||
33 | echo "Compiling insn-x86-dat-src.c to 32-bit object" | ||
34 | |||
35 | gcc -g -c -m32 insn-x86-dat-src.c | ||
36 | |||
37 | objdump -dSw insn-x86-dat-src.o | awk -f gen-insn-x86-dat.awk > insn-x86-dat-32.c | ||
38 | |||
39 | rm -f insn-x86-dat-src.o | ||
40 | |||
41 | trap - EXIT | ||
42 | |||
43 | echo "Done (use git diff to see the changes)" | ||
diff --git a/tools/perf/arch/x86/tests/insn-x86-dat-32.c b/tools/perf/arch/x86/tests/insn-x86-dat-32.c new file mode 100644 index 000000000000..3b491cfe204e --- /dev/null +++ b/tools/perf/arch/x86/tests/insn-x86-dat-32.c | |||
@@ -0,0 +1,658 @@ | |||
1 | /* | ||
2 | * Generated by gen-insn-x86-dat.sh and gen-insn-x86-dat.awk | ||
3 | * from insn-x86-dat-src.c for inclusion by insn-x86.c | ||
4 | * Do not change this code. | ||
5 | */ | ||
6 | |||
7 | {{0x0f, 0x31, }, 2, 0, "", "", | ||
8 | "0f 31 \trdtsc ",}, | ||
9 | {{0xf3, 0x0f, 0x1b, 0x00, }, 4, 0, "", "", | ||
10 | "f3 0f 1b 00 \tbndmk (%eax),%bnd0",}, | ||
11 | {{0xf3, 0x0f, 0x1b, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
12 | "f3 0f 1b 05 78 56 34 12 \tbndmk 0x12345678,%bnd0",}, | ||
13 | {{0xf3, 0x0f, 0x1b, 0x18, }, 4, 0, "", "", | ||
14 | "f3 0f 1b 18 \tbndmk (%eax),%bnd3",}, | ||
15 | {{0xf3, 0x0f, 0x1b, 0x04, 0x01, }, 5, 0, "", "", | ||
16 | "f3 0f 1b 04 01 \tbndmk (%ecx,%eax,1),%bnd0",}, | ||
17 | {{0xf3, 0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
18 | "f3 0f 1b 04 05 78 56 34 12 \tbndmk 0x12345678(,%eax,1),%bnd0",}, | ||
19 | {{0xf3, 0x0f, 0x1b, 0x04, 0x08, }, 5, 0, "", "", | ||
20 | "f3 0f 1b 04 08 \tbndmk (%eax,%ecx,1),%bnd0",}, | ||
21 | {{0xf3, 0x0f, 0x1b, 0x04, 0xc8, }, 5, 0, "", "", | ||
22 | "f3 0f 1b 04 c8 \tbndmk (%eax,%ecx,8),%bnd0",}, | ||
23 | {{0xf3, 0x0f, 0x1b, 0x40, 0x12, }, 5, 0, "", "", | ||
24 | "f3 0f 1b 40 12 \tbndmk 0x12(%eax),%bnd0",}, | ||
25 | {{0xf3, 0x0f, 0x1b, 0x45, 0x12, }, 5, 0, "", "", | ||
26 | "f3 0f 1b 45 12 \tbndmk 0x12(%ebp),%bnd0",}, | ||
27 | {{0xf3, 0x0f, 0x1b, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
28 | "f3 0f 1b 44 01 12 \tbndmk 0x12(%ecx,%eax,1),%bnd0",}, | ||
29 | {{0xf3, 0x0f, 0x1b, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
30 | "f3 0f 1b 44 05 12 \tbndmk 0x12(%ebp,%eax,1),%bnd0",}, | ||
31 | {{0xf3, 0x0f, 0x1b, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
32 | "f3 0f 1b 44 08 12 \tbndmk 0x12(%eax,%ecx,1),%bnd0",}, | ||
33 | {{0xf3, 0x0f, 0x1b, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
34 | "f3 0f 1b 44 c8 12 \tbndmk 0x12(%eax,%ecx,8),%bnd0",}, | ||
35 | {{0xf3, 0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
36 | "f3 0f 1b 80 78 56 34 12 \tbndmk 0x12345678(%eax),%bnd0",}, | ||
37 | {{0xf3, 0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
38 | "f3 0f 1b 85 78 56 34 12 \tbndmk 0x12345678(%ebp),%bnd0",}, | ||
39 | {{0xf3, 0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
40 | "f3 0f 1b 84 01 78 56 34 12 \tbndmk 0x12345678(%ecx,%eax,1),%bnd0",}, | ||
41 | {{0xf3, 0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
42 | "f3 0f 1b 84 05 78 56 34 12 \tbndmk 0x12345678(%ebp,%eax,1),%bnd0",}, | ||
43 | {{0xf3, 0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
44 | "f3 0f 1b 84 08 78 56 34 12 \tbndmk 0x12345678(%eax,%ecx,1),%bnd0",}, | ||
45 | {{0xf3, 0x0f, 0x1b, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
46 | "f3 0f 1b 84 c8 78 56 34 12 \tbndmk 0x12345678(%eax,%ecx,8),%bnd0",}, | ||
47 | {{0xf3, 0x0f, 0x1a, 0x00, }, 4, 0, "", "", | ||
48 | "f3 0f 1a 00 \tbndcl (%eax),%bnd0",}, | ||
49 | {{0xf3, 0x0f, 0x1a, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
50 | "f3 0f 1a 05 78 56 34 12 \tbndcl 0x12345678,%bnd0",}, | ||
51 | {{0xf3, 0x0f, 0x1a, 0x18, }, 4, 0, "", "", | ||
52 | "f3 0f 1a 18 \tbndcl (%eax),%bnd3",}, | ||
53 | {{0xf3, 0x0f, 0x1a, 0x04, 0x01, }, 5, 0, "", "", | ||
54 | "f3 0f 1a 04 01 \tbndcl (%ecx,%eax,1),%bnd0",}, | ||
55 | {{0xf3, 0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
56 | "f3 0f 1a 04 05 78 56 34 12 \tbndcl 0x12345678(,%eax,1),%bnd0",}, | ||
57 | {{0xf3, 0x0f, 0x1a, 0x04, 0x08, }, 5, 0, "", "", | ||
58 | "f3 0f 1a 04 08 \tbndcl (%eax,%ecx,1),%bnd0",}, | ||
59 | {{0xf3, 0x0f, 0x1a, 0x04, 0xc8, }, 5, 0, "", "", | ||
60 | "f3 0f 1a 04 c8 \tbndcl (%eax,%ecx,8),%bnd0",}, | ||
61 | {{0xf3, 0x0f, 0x1a, 0x40, 0x12, }, 5, 0, "", "", | ||
62 | "f3 0f 1a 40 12 \tbndcl 0x12(%eax),%bnd0",}, | ||
63 | {{0xf3, 0x0f, 0x1a, 0x45, 0x12, }, 5, 0, "", "", | ||
64 | "f3 0f 1a 45 12 \tbndcl 0x12(%ebp),%bnd0",}, | ||
65 | {{0xf3, 0x0f, 0x1a, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
66 | "f3 0f 1a 44 01 12 \tbndcl 0x12(%ecx,%eax,1),%bnd0",}, | ||
67 | {{0xf3, 0x0f, 0x1a, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
68 | "f3 0f 1a 44 05 12 \tbndcl 0x12(%ebp,%eax,1),%bnd0",}, | ||
69 | {{0xf3, 0x0f, 0x1a, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
70 | "f3 0f 1a 44 08 12 \tbndcl 0x12(%eax,%ecx,1),%bnd0",}, | ||
71 | {{0xf3, 0x0f, 0x1a, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
72 | "f3 0f 1a 44 c8 12 \tbndcl 0x12(%eax,%ecx,8),%bnd0",}, | ||
73 | {{0xf3, 0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
74 | "f3 0f 1a 80 78 56 34 12 \tbndcl 0x12345678(%eax),%bnd0",}, | ||
75 | {{0xf3, 0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
76 | "f3 0f 1a 85 78 56 34 12 \tbndcl 0x12345678(%ebp),%bnd0",}, | ||
77 | {{0xf3, 0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
78 | "f3 0f 1a 84 01 78 56 34 12 \tbndcl 0x12345678(%ecx,%eax,1),%bnd0",}, | ||
79 | {{0xf3, 0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
80 | "f3 0f 1a 84 05 78 56 34 12 \tbndcl 0x12345678(%ebp,%eax,1),%bnd0",}, | ||
81 | {{0xf3, 0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
82 | "f3 0f 1a 84 08 78 56 34 12 \tbndcl 0x12345678(%eax,%ecx,1),%bnd0",}, | ||
83 | {{0xf3, 0x0f, 0x1a, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
84 | "f3 0f 1a 84 c8 78 56 34 12 \tbndcl 0x12345678(%eax,%ecx,8),%bnd0",}, | ||
85 | {{0xf3, 0x0f, 0x1a, 0xc0, }, 4, 0, "", "", | ||
86 | "f3 0f 1a c0 \tbndcl %eax,%bnd0",}, | ||
87 | {{0xf2, 0x0f, 0x1a, 0x00, }, 4, 0, "", "", | ||
88 | "f2 0f 1a 00 \tbndcu (%eax),%bnd0",}, | ||
89 | {{0xf2, 0x0f, 0x1a, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
90 | "f2 0f 1a 05 78 56 34 12 \tbndcu 0x12345678,%bnd0",}, | ||
91 | {{0xf2, 0x0f, 0x1a, 0x18, }, 4, 0, "", "", | ||
92 | "f2 0f 1a 18 \tbndcu (%eax),%bnd3",}, | ||
93 | {{0xf2, 0x0f, 0x1a, 0x04, 0x01, }, 5, 0, "", "", | ||
94 | "f2 0f 1a 04 01 \tbndcu (%ecx,%eax,1),%bnd0",}, | ||
95 | {{0xf2, 0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
96 | "f2 0f 1a 04 05 78 56 34 12 \tbndcu 0x12345678(,%eax,1),%bnd0",}, | ||
97 | {{0xf2, 0x0f, 0x1a, 0x04, 0x08, }, 5, 0, "", "", | ||
98 | "f2 0f 1a 04 08 \tbndcu (%eax,%ecx,1),%bnd0",}, | ||
99 | {{0xf2, 0x0f, 0x1a, 0x04, 0xc8, }, 5, 0, "", "", | ||
100 | "f2 0f 1a 04 c8 \tbndcu (%eax,%ecx,8),%bnd0",}, | ||
101 | {{0xf2, 0x0f, 0x1a, 0x40, 0x12, }, 5, 0, "", "", | ||
102 | "f2 0f 1a 40 12 \tbndcu 0x12(%eax),%bnd0",}, | ||
103 | {{0xf2, 0x0f, 0x1a, 0x45, 0x12, }, 5, 0, "", "", | ||
104 | "f2 0f 1a 45 12 \tbndcu 0x12(%ebp),%bnd0",}, | ||
105 | {{0xf2, 0x0f, 0x1a, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
106 | "f2 0f 1a 44 01 12 \tbndcu 0x12(%ecx,%eax,1),%bnd0",}, | ||
107 | {{0xf2, 0x0f, 0x1a, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
108 | "f2 0f 1a 44 05 12 \tbndcu 0x12(%ebp,%eax,1),%bnd0",}, | ||
109 | {{0xf2, 0x0f, 0x1a, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
110 | "f2 0f 1a 44 08 12 \tbndcu 0x12(%eax,%ecx,1),%bnd0",}, | ||
111 | {{0xf2, 0x0f, 0x1a, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
112 | "f2 0f 1a 44 c8 12 \tbndcu 0x12(%eax,%ecx,8),%bnd0",}, | ||
113 | {{0xf2, 0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
114 | "f2 0f 1a 80 78 56 34 12 \tbndcu 0x12345678(%eax),%bnd0",}, | ||
115 | {{0xf2, 0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
116 | "f2 0f 1a 85 78 56 34 12 \tbndcu 0x12345678(%ebp),%bnd0",}, | ||
117 | {{0xf2, 0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
118 | "f2 0f 1a 84 01 78 56 34 12 \tbndcu 0x12345678(%ecx,%eax,1),%bnd0",}, | ||
119 | {{0xf2, 0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
120 | "f2 0f 1a 84 05 78 56 34 12 \tbndcu 0x12345678(%ebp,%eax,1),%bnd0",}, | ||
121 | {{0xf2, 0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
122 | "f2 0f 1a 84 08 78 56 34 12 \tbndcu 0x12345678(%eax,%ecx,1),%bnd0",}, | ||
123 | {{0xf2, 0x0f, 0x1a, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
124 | "f2 0f 1a 84 c8 78 56 34 12 \tbndcu 0x12345678(%eax,%ecx,8),%bnd0",}, | ||
125 | {{0xf2, 0x0f, 0x1a, 0xc0, }, 4, 0, "", "", | ||
126 | "f2 0f 1a c0 \tbndcu %eax,%bnd0",}, | ||
127 | {{0xf2, 0x0f, 0x1b, 0x00, }, 4, 0, "", "", | ||
128 | "f2 0f 1b 00 \tbndcn (%eax),%bnd0",}, | ||
129 | {{0xf2, 0x0f, 0x1b, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
130 | "f2 0f 1b 05 78 56 34 12 \tbndcn 0x12345678,%bnd0",}, | ||
131 | {{0xf2, 0x0f, 0x1b, 0x18, }, 4, 0, "", "", | ||
132 | "f2 0f 1b 18 \tbndcn (%eax),%bnd3",}, | ||
133 | {{0xf2, 0x0f, 0x1b, 0x04, 0x01, }, 5, 0, "", "", | ||
134 | "f2 0f 1b 04 01 \tbndcn (%ecx,%eax,1),%bnd0",}, | ||
135 | {{0xf2, 0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
136 | "f2 0f 1b 04 05 78 56 34 12 \tbndcn 0x12345678(,%eax,1),%bnd0",}, | ||
137 | {{0xf2, 0x0f, 0x1b, 0x04, 0x08, }, 5, 0, "", "", | ||
138 | "f2 0f 1b 04 08 \tbndcn (%eax,%ecx,1),%bnd0",}, | ||
139 | {{0xf2, 0x0f, 0x1b, 0x04, 0xc8, }, 5, 0, "", "", | ||
140 | "f2 0f 1b 04 c8 \tbndcn (%eax,%ecx,8),%bnd0",}, | ||
141 | {{0xf2, 0x0f, 0x1b, 0x40, 0x12, }, 5, 0, "", "", | ||
142 | "f2 0f 1b 40 12 \tbndcn 0x12(%eax),%bnd0",}, | ||
143 | {{0xf2, 0x0f, 0x1b, 0x45, 0x12, }, 5, 0, "", "", | ||
144 | "f2 0f 1b 45 12 \tbndcn 0x12(%ebp),%bnd0",}, | ||
145 | {{0xf2, 0x0f, 0x1b, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
146 | "f2 0f 1b 44 01 12 \tbndcn 0x12(%ecx,%eax,1),%bnd0",}, | ||
147 | {{0xf2, 0x0f, 0x1b, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
148 | "f2 0f 1b 44 05 12 \tbndcn 0x12(%ebp,%eax,1),%bnd0",}, | ||
149 | {{0xf2, 0x0f, 0x1b, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
150 | "f2 0f 1b 44 08 12 \tbndcn 0x12(%eax,%ecx,1),%bnd0",}, | ||
151 | {{0xf2, 0x0f, 0x1b, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
152 | "f2 0f 1b 44 c8 12 \tbndcn 0x12(%eax,%ecx,8),%bnd0",}, | ||
153 | {{0xf2, 0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
154 | "f2 0f 1b 80 78 56 34 12 \tbndcn 0x12345678(%eax),%bnd0",}, | ||
155 | {{0xf2, 0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
156 | "f2 0f 1b 85 78 56 34 12 \tbndcn 0x12345678(%ebp),%bnd0",}, | ||
157 | {{0xf2, 0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
158 | "f2 0f 1b 84 01 78 56 34 12 \tbndcn 0x12345678(%ecx,%eax,1),%bnd0",}, | ||
159 | {{0xf2, 0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
160 | "f2 0f 1b 84 05 78 56 34 12 \tbndcn 0x12345678(%ebp,%eax,1),%bnd0",}, | ||
161 | {{0xf2, 0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
162 | "f2 0f 1b 84 08 78 56 34 12 \tbndcn 0x12345678(%eax,%ecx,1),%bnd0",}, | ||
163 | {{0xf2, 0x0f, 0x1b, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
164 | "f2 0f 1b 84 c8 78 56 34 12 \tbndcn 0x12345678(%eax,%ecx,8),%bnd0",}, | ||
165 | {{0xf2, 0x0f, 0x1b, 0xc0, }, 4, 0, "", "", | ||
166 | "f2 0f 1b c0 \tbndcn %eax,%bnd0",}, | ||
167 | {{0x66, 0x0f, 0x1a, 0x00, }, 4, 0, "", "", | ||
168 | "66 0f 1a 00 \tbndmov (%eax),%bnd0",}, | ||
169 | {{0x66, 0x0f, 0x1a, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
170 | "66 0f 1a 05 78 56 34 12 \tbndmov 0x12345678,%bnd0",}, | ||
171 | {{0x66, 0x0f, 0x1a, 0x18, }, 4, 0, "", "", | ||
172 | "66 0f 1a 18 \tbndmov (%eax),%bnd3",}, | ||
173 | {{0x66, 0x0f, 0x1a, 0x04, 0x01, }, 5, 0, "", "", | ||
174 | "66 0f 1a 04 01 \tbndmov (%ecx,%eax,1),%bnd0",}, | ||
175 | {{0x66, 0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
176 | "66 0f 1a 04 05 78 56 34 12 \tbndmov 0x12345678(,%eax,1),%bnd0",}, | ||
177 | {{0x66, 0x0f, 0x1a, 0x04, 0x08, }, 5, 0, "", "", | ||
178 | "66 0f 1a 04 08 \tbndmov (%eax,%ecx,1),%bnd0",}, | ||
179 | {{0x66, 0x0f, 0x1a, 0x04, 0xc8, }, 5, 0, "", "", | ||
180 | "66 0f 1a 04 c8 \tbndmov (%eax,%ecx,8),%bnd0",}, | ||
181 | {{0x66, 0x0f, 0x1a, 0x40, 0x12, }, 5, 0, "", "", | ||
182 | "66 0f 1a 40 12 \tbndmov 0x12(%eax),%bnd0",}, | ||
183 | {{0x66, 0x0f, 0x1a, 0x45, 0x12, }, 5, 0, "", "", | ||
184 | "66 0f 1a 45 12 \tbndmov 0x12(%ebp),%bnd0",}, | ||
185 | {{0x66, 0x0f, 0x1a, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
186 | "66 0f 1a 44 01 12 \tbndmov 0x12(%ecx,%eax,1),%bnd0",}, | ||
187 | {{0x66, 0x0f, 0x1a, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
188 | "66 0f 1a 44 05 12 \tbndmov 0x12(%ebp,%eax,1),%bnd0",}, | ||
189 | {{0x66, 0x0f, 0x1a, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
190 | "66 0f 1a 44 08 12 \tbndmov 0x12(%eax,%ecx,1),%bnd0",}, | ||
191 | {{0x66, 0x0f, 0x1a, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
192 | "66 0f 1a 44 c8 12 \tbndmov 0x12(%eax,%ecx,8),%bnd0",}, | ||
193 | {{0x66, 0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
194 | "66 0f 1a 80 78 56 34 12 \tbndmov 0x12345678(%eax),%bnd0",}, | ||
195 | {{0x66, 0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
196 | "66 0f 1a 85 78 56 34 12 \tbndmov 0x12345678(%ebp),%bnd0",}, | ||
197 | {{0x66, 0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
198 | "66 0f 1a 84 01 78 56 34 12 \tbndmov 0x12345678(%ecx,%eax,1),%bnd0",}, | ||
199 | {{0x66, 0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
200 | "66 0f 1a 84 05 78 56 34 12 \tbndmov 0x12345678(%ebp,%eax,1),%bnd0",}, | ||
201 | {{0x66, 0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
202 | "66 0f 1a 84 08 78 56 34 12 \tbndmov 0x12345678(%eax,%ecx,1),%bnd0",}, | ||
203 | {{0x66, 0x0f, 0x1a, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
204 | "66 0f 1a 84 c8 78 56 34 12 \tbndmov 0x12345678(%eax,%ecx,8),%bnd0",}, | ||
205 | {{0x66, 0x0f, 0x1b, 0x00, }, 4, 0, "", "", | ||
206 | "66 0f 1b 00 \tbndmov %bnd0,(%eax)",}, | ||
207 | {{0x66, 0x0f, 0x1b, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
208 | "66 0f 1b 05 78 56 34 12 \tbndmov %bnd0,0x12345678",}, | ||
209 | {{0x66, 0x0f, 0x1b, 0x18, }, 4, 0, "", "", | ||
210 | "66 0f 1b 18 \tbndmov %bnd3,(%eax)",}, | ||
211 | {{0x66, 0x0f, 0x1b, 0x04, 0x01, }, 5, 0, "", "", | ||
212 | "66 0f 1b 04 01 \tbndmov %bnd0,(%ecx,%eax,1)",}, | ||
213 | {{0x66, 0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
214 | "66 0f 1b 04 05 78 56 34 12 \tbndmov %bnd0,0x12345678(,%eax,1)",}, | ||
215 | {{0x66, 0x0f, 0x1b, 0x04, 0x08, }, 5, 0, "", "", | ||
216 | "66 0f 1b 04 08 \tbndmov %bnd0,(%eax,%ecx,1)",}, | ||
217 | {{0x66, 0x0f, 0x1b, 0x04, 0xc8, }, 5, 0, "", "", | ||
218 | "66 0f 1b 04 c8 \tbndmov %bnd0,(%eax,%ecx,8)",}, | ||
219 | {{0x66, 0x0f, 0x1b, 0x40, 0x12, }, 5, 0, "", "", | ||
220 | "66 0f 1b 40 12 \tbndmov %bnd0,0x12(%eax)",}, | ||
221 | {{0x66, 0x0f, 0x1b, 0x45, 0x12, }, 5, 0, "", "", | ||
222 | "66 0f 1b 45 12 \tbndmov %bnd0,0x12(%ebp)",}, | ||
223 | {{0x66, 0x0f, 0x1b, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
224 | "66 0f 1b 44 01 12 \tbndmov %bnd0,0x12(%ecx,%eax,1)",}, | ||
225 | {{0x66, 0x0f, 0x1b, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
226 | "66 0f 1b 44 05 12 \tbndmov %bnd0,0x12(%ebp,%eax,1)",}, | ||
227 | {{0x66, 0x0f, 0x1b, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
228 | "66 0f 1b 44 08 12 \tbndmov %bnd0,0x12(%eax,%ecx,1)",}, | ||
229 | {{0x66, 0x0f, 0x1b, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
230 | "66 0f 1b 44 c8 12 \tbndmov %bnd0,0x12(%eax,%ecx,8)",}, | ||
231 | {{0x66, 0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
232 | "66 0f 1b 80 78 56 34 12 \tbndmov %bnd0,0x12345678(%eax)",}, | ||
233 | {{0x66, 0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
234 | "66 0f 1b 85 78 56 34 12 \tbndmov %bnd0,0x12345678(%ebp)",}, | ||
235 | {{0x66, 0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
236 | "66 0f 1b 84 01 78 56 34 12 \tbndmov %bnd0,0x12345678(%ecx,%eax,1)",}, | ||
237 | {{0x66, 0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
238 | "66 0f 1b 84 05 78 56 34 12 \tbndmov %bnd0,0x12345678(%ebp,%eax,1)",}, | ||
239 | {{0x66, 0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
240 | "66 0f 1b 84 08 78 56 34 12 \tbndmov %bnd0,0x12345678(%eax,%ecx,1)",}, | ||
241 | {{0x66, 0x0f, 0x1b, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
242 | "66 0f 1b 84 c8 78 56 34 12 \tbndmov %bnd0,0x12345678(%eax,%ecx,8)",}, | ||
243 | {{0x66, 0x0f, 0x1a, 0xc8, }, 4, 0, "", "", | ||
244 | "66 0f 1a c8 \tbndmov %bnd0,%bnd1",}, | ||
245 | {{0x66, 0x0f, 0x1a, 0xc1, }, 4, 0, "", "", | ||
246 | "66 0f 1a c1 \tbndmov %bnd1,%bnd0",}, | ||
247 | {{0x0f, 0x1a, 0x00, }, 3, 0, "", "", | ||
248 | "0f 1a 00 \tbndldx (%eax),%bnd0",}, | ||
249 | {{0x0f, 0x1a, 0x05, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
250 | "0f 1a 05 78 56 34 12 \tbndldx 0x12345678,%bnd0",}, | ||
251 | {{0x0f, 0x1a, 0x18, }, 3, 0, "", "", | ||
252 | "0f 1a 18 \tbndldx (%eax),%bnd3",}, | ||
253 | {{0x0f, 0x1a, 0x04, 0x01, }, 4, 0, "", "", | ||
254 | "0f 1a 04 01 \tbndldx (%ecx,%eax,1),%bnd0",}, | ||
255 | {{0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
256 | "0f 1a 04 05 78 56 34 12 \tbndldx 0x12345678(,%eax,1),%bnd0",}, | ||
257 | {{0x0f, 0x1a, 0x04, 0x08, }, 4, 0, "", "", | ||
258 | "0f 1a 04 08 \tbndldx (%eax,%ecx,1),%bnd0",}, | ||
259 | {{0x0f, 0x1a, 0x40, 0x12, }, 4, 0, "", "", | ||
260 | "0f 1a 40 12 \tbndldx 0x12(%eax),%bnd0",}, | ||
261 | {{0x0f, 0x1a, 0x45, 0x12, }, 4, 0, "", "", | ||
262 | "0f 1a 45 12 \tbndldx 0x12(%ebp),%bnd0",}, | ||
263 | {{0x0f, 0x1a, 0x44, 0x01, 0x12, }, 5, 0, "", "", | ||
264 | "0f 1a 44 01 12 \tbndldx 0x12(%ecx,%eax,1),%bnd0",}, | ||
265 | {{0x0f, 0x1a, 0x44, 0x05, 0x12, }, 5, 0, "", "", | ||
266 | "0f 1a 44 05 12 \tbndldx 0x12(%ebp,%eax,1),%bnd0",}, | ||
267 | {{0x0f, 0x1a, 0x44, 0x08, 0x12, }, 5, 0, "", "", | ||
268 | "0f 1a 44 08 12 \tbndldx 0x12(%eax,%ecx,1),%bnd0",}, | ||
269 | {{0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
270 | "0f 1a 80 78 56 34 12 \tbndldx 0x12345678(%eax),%bnd0",}, | ||
271 | {{0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
272 | "0f 1a 85 78 56 34 12 \tbndldx 0x12345678(%ebp),%bnd0",}, | ||
273 | {{0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
274 | "0f 1a 84 01 78 56 34 12 \tbndldx 0x12345678(%ecx,%eax,1),%bnd0",}, | ||
275 | {{0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
276 | "0f 1a 84 05 78 56 34 12 \tbndldx 0x12345678(%ebp,%eax,1),%bnd0",}, | ||
277 | {{0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
278 | "0f 1a 84 08 78 56 34 12 \tbndldx 0x12345678(%eax,%ecx,1),%bnd0",}, | ||
279 | {{0x0f, 0x1b, 0x00, }, 3, 0, "", "", | ||
280 | "0f 1b 00 \tbndstx %bnd0,(%eax)",}, | ||
281 | {{0x0f, 0x1b, 0x05, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
282 | "0f 1b 05 78 56 34 12 \tbndstx %bnd0,0x12345678",}, | ||
283 | {{0x0f, 0x1b, 0x18, }, 3, 0, "", "", | ||
284 | "0f 1b 18 \tbndstx %bnd3,(%eax)",}, | ||
285 | {{0x0f, 0x1b, 0x04, 0x01, }, 4, 0, "", "", | ||
286 | "0f 1b 04 01 \tbndstx %bnd0,(%ecx,%eax,1)",}, | ||
287 | {{0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
288 | "0f 1b 04 05 78 56 34 12 \tbndstx %bnd0,0x12345678(,%eax,1)",}, | ||
289 | {{0x0f, 0x1b, 0x04, 0x08, }, 4, 0, "", "", | ||
290 | "0f 1b 04 08 \tbndstx %bnd0,(%eax,%ecx,1)",}, | ||
291 | {{0x0f, 0x1b, 0x40, 0x12, }, 4, 0, "", "", | ||
292 | "0f 1b 40 12 \tbndstx %bnd0,0x12(%eax)",}, | ||
293 | {{0x0f, 0x1b, 0x45, 0x12, }, 4, 0, "", "", | ||
294 | "0f 1b 45 12 \tbndstx %bnd0,0x12(%ebp)",}, | ||
295 | {{0x0f, 0x1b, 0x44, 0x01, 0x12, }, 5, 0, "", "", | ||
296 | "0f 1b 44 01 12 \tbndstx %bnd0,0x12(%ecx,%eax,1)",}, | ||
297 | {{0x0f, 0x1b, 0x44, 0x05, 0x12, }, 5, 0, "", "", | ||
298 | "0f 1b 44 05 12 \tbndstx %bnd0,0x12(%ebp,%eax,1)",}, | ||
299 | {{0x0f, 0x1b, 0x44, 0x08, 0x12, }, 5, 0, "", "", | ||
300 | "0f 1b 44 08 12 \tbndstx %bnd0,0x12(%eax,%ecx,1)",}, | ||
301 | {{0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
302 | "0f 1b 80 78 56 34 12 \tbndstx %bnd0,0x12345678(%eax)",}, | ||
303 | {{0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
304 | "0f 1b 85 78 56 34 12 \tbndstx %bnd0,0x12345678(%ebp)",}, | ||
305 | {{0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
306 | "0f 1b 84 01 78 56 34 12 \tbndstx %bnd0,0x12345678(%ecx,%eax,1)",}, | ||
307 | {{0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
308 | "0f 1b 84 05 78 56 34 12 \tbndstx %bnd0,0x12345678(%ebp,%eax,1)",}, | ||
309 | {{0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
310 | "0f 1b 84 08 78 56 34 12 \tbndstx %bnd0,0x12345678(%eax,%ecx,1)",}, | ||
311 | {{0xf2, 0xe8, 0xfc, 0xff, 0xff, 0xff, }, 6, 0xfffffffc, "call", "unconditional", | ||
312 | "f2 e8 fc ff ff ff \tbnd call 3c3 <main+0x3c3>",}, | ||
313 | {{0xf2, 0xff, 0x10, }, 3, 0, "call", "indirect", | ||
314 | "f2 ff 10 \tbnd call *(%eax)",}, | ||
315 | {{0xf2, 0xc3, }, 2, 0, "ret", "indirect", | ||
316 | "f2 c3 \tbnd ret ",}, | ||
317 | {{0xf2, 0xe9, 0xfc, 0xff, 0xff, 0xff, }, 6, 0xfffffffc, "jmp", "unconditional", | ||
318 | "f2 e9 fc ff ff ff \tbnd jmp 3ce <main+0x3ce>",}, | ||
319 | {{0xf2, 0xe9, 0xfc, 0xff, 0xff, 0xff, }, 6, 0xfffffffc, "jmp", "unconditional", | ||
320 | "f2 e9 fc ff ff ff \tbnd jmp 3d4 <main+0x3d4>",}, | ||
321 | {{0xf2, 0xff, 0x21, }, 3, 0, "jmp", "indirect", | ||
322 | "f2 ff 21 \tbnd jmp *(%ecx)",}, | ||
323 | {{0xf2, 0x0f, 0x85, 0xfc, 0xff, 0xff, 0xff, }, 7, 0xfffffffc, "jcc", "conditional", | ||
324 | "f2 0f 85 fc ff ff ff \tbnd jne 3de <main+0x3de>",}, | ||
325 | {{0x0f, 0x3a, 0xcc, 0xc1, 0x00, }, 5, 0, "", "", | ||
326 | "0f 3a cc c1 00 \tsha1rnds4 $0x0,%xmm1,%xmm0",}, | ||
327 | {{0x0f, 0x3a, 0xcc, 0xd7, 0x91, }, 5, 0, "", "", | ||
328 | "0f 3a cc d7 91 \tsha1rnds4 $0x91,%xmm7,%xmm2",}, | ||
329 | {{0x0f, 0x3a, 0xcc, 0x00, 0x91, }, 5, 0, "", "", | ||
330 | "0f 3a cc 00 91 \tsha1rnds4 $0x91,(%eax),%xmm0",}, | ||
331 | {{0x0f, 0x3a, 0xcc, 0x05, 0x78, 0x56, 0x34, 0x12, 0x91, }, 9, 0, "", "", | ||
332 | "0f 3a cc 05 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678,%xmm0",}, | ||
333 | {{0x0f, 0x3a, 0xcc, 0x18, 0x91, }, 5, 0, "", "", | ||
334 | "0f 3a cc 18 91 \tsha1rnds4 $0x91,(%eax),%xmm3",}, | ||
335 | {{0x0f, 0x3a, 0xcc, 0x04, 0x01, 0x91, }, 6, 0, "", "", | ||
336 | "0f 3a cc 04 01 91 \tsha1rnds4 $0x91,(%ecx,%eax,1),%xmm0",}, | ||
337 | {{0x0f, 0x3a, 0xcc, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
338 | "0f 3a cc 04 05 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(,%eax,1),%xmm0",}, | ||
339 | {{0x0f, 0x3a, 0xcc, 0x04, 0x08, 0x91, }, 6, 0, "", "", | ||
340 | "0f 3a cc 04 08 91 \tsha1rnds4 $0x91,(%eax,%ecx,1),%xmm0",}, | ||
341 | {{0x0f, 0x3a, 0xcc, 0x04, 0xc8, 0x91, }, 6, 0, "", "", | ||
342 | "0f 3a cc 04 c8 91 \tsha1rnds4 $0x91,(%eax,%ecx,8),%xmm0",}, | ||
343 | {{0x0f, 0x3a, 0xcc, 0x40, 0x12, 0x91, }, 6, 0, "", "", | ||
344 | "0f 3a cc 40 12 91 \tsha1rnds4 $0x91,0x12(%eax),%xmm0",}, | ||
345 | {{0x0f, 0x3a, 0xcc, 0x45, 0x12, 0x91, }, 6, 0, "", "", | ||
346 | "0f 3a cc 45 12 91 \tsha1rnds4 $0x91,0x12(%ebp),%xmm0",}, | ||
347 | {{0x0f, 0x3a, 0xcc, 0x44, 0x01, 0x12, 0x91, }, 7, 0, "", "", | ||
348 | "0f 3a cc 44 01 12 91 \tsha1rnds4 $0x91,0x12(%ecx,%eax,1),%xmm0",}, | ||
349 | {{0x0f, 0x3a, 0xcc, 0x44, 0x05, 0x12, 0x91, }, 7, 0, "", "", | ||
350 | "0f 3a cc 44 05 12 91 \tsha1rnds4 $0x91,0x12(%ebp,%eax,1),%xmm0",}, | ||
351 | {{0x0f, 0x3a, 0xcc, 0x44, 0x08, 0x12, 0x91, }, 7, 0, "", "", | ||
352 | "0f 3a cc 44 08 12 91 \tsha1rnds4 $0x91,0x12(%eax,%ecx,1),%xmm0",}, | ||
353 | {{0x0f, 0x3a, 0xcc, 0x44, 0xc8, 0x12, 0x91, }, 7, 0, "", "", | ||
354 | "0f 3a cc 44 c8 12 91 \tsha1rnds4 $0x91,0x12(%eax,%ecx,8),%xmm0",}, | ||
355 | {{0x0f, 0x3a, 0xcc, 0x80, 0x78, 0x56, 0x34, 0x12, 0x91, }, 9, 0, "", "", | ||
356 | "0f 3a cc 80 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%eax),%xmm0",}, | ||
357 | {{0x0f, 0x3a, 0xcc, 0x85, 0x78, 0x56, 0x34, 0x12, 0x91, }, 9, 0, "", "", | ||
358 | "0f 3a cc 85 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%ebp),%xmm0",}, | ||
359 | {{0x0f, 0x3a, 0xcc, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
360 | "0f 3a cc 84 01 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%ecx,%eax,1),%xmm0",}, | ||
361 | {{0x0f, 0x3a, 0xcc, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
362 | "0f 3a cc 84 05 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%ebp,%eax,1),%xmm0",}, | ||
363 | {{0x0f, 0x3a, 0xcc, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
364 | "0f 3a cc 84 08 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%eax,%ecx,1),%xmm0",}, | ||
365 | {{0x0f, 0x3a, 0xcc, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
366 | "0f 3a cc 84 c8 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%eax,%ecx,8),%xmm0",}, | ||
367 | {{0x0f, 0x38, 0xc8, 0xc1, }, 4, 0, "", "", | ||
368 | "0f 38 c8 c1 \tsha1nexte %xmm1,%xmm0",}, | ||
369 | {{0x0f, 0x38, 0xc8, 0xd7, }, 4, 0, "", "", | ||
370 | "0f 38 c8 d7 \tsha1nexte %xmm7,%xmm2",}, | ||
371 | {{0x0f, 0x38, 0xc8, 0x00, }, 4, 0, "", "", | ||
372 | "0f 38 c8 00 \tsha1nexte (%eax),%xmm0",}, | ||
373 | {{0x0f, 0x38, 0xc8, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
374 | "0f 38 c8 05 78 56 34 12 \tsha1nexte 0x12345678,%xmm0",}, | ||
375 | {{0x0f, 0x38, 0xc8, 0x18, }, 4, 0, "", "", | ||
376 | "0f 38 c8 18 \tsha1nexte (%eax),%xmm3",}, | ||
377 | {{0x0f, 0x38, 0xc8, 0x04, 0x01, }, 5, 0, "", "", | ||
378 | "0f 38 c8 04 01 \tsha1nexte (%ecx,%eax,1),%xmm0",}, | ||
379 | {{0x0f, 0x38, 0xc8, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
380 | "0f 38 c8 04 05 78 56 34 12 \tsha1nexte 0x12345678(,%eax,1),%xmm0",}, | ||
381 | {{0x0f, 0x38, 0xc8, 0x04, 0x08, }, 5, 0, "", "", | ||
382 | "0f 38 c8 04 08 \tsha1nexte (%eax,%ecx,1),%xmm0",}, | ||
383 | {{0x0f, 0x38, 0xc8, 0x04, 0xc8, }, 5, 0, "", "", | ||
384 | "0f 38 c8 04 c8 \tsha1nexte (%eax,%ecx,8),%xmm0",}, | ||
385 | {{0x0f, 0x38, 0xc8, 0x40, 0x12, }, 5, 0, "", "", | ||
386 | "0f 38 c8 40 12 \tsha1nexte 0x12(%eax),%xmm0",}, | ||
387 | {{0x0f, 0x38, 0xc8, 0x45, 0x12, }, 5, 0, "", "", | ||
388 | "0f 38 c8 45 12 \tsha1nexte 0x12(%ebp),%xmm0",}, | ||
389 | {{0x0f, 0x38, 0xc8, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
390 | "0f 38 c8 44 01 12 \tsha1nexte 0x12(%ecx,%eax,1),%xmm0",}, | ||
391 | {{0x0f, 0x38, 0xc8, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
392 | "0f 38 c8 44 05 12 \tsha1nexte 0x12(%ebp,%eax,1),%xmm0",}, | ||
393 | {{0x0f, 0x38, 0xc8, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
394 | "0f 38 c8 44 08 12 \tsha1nexte 0x12(%eax,%ecx,1),%xmm0",}, | ||
395 | {{0x0f, 0x38, 0xc8, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
396 | "0f 38 c8 44 c8 12 \tsha1nexte 0x12(%eax,%ecx,8),%xmm0",}, | ||
397 | {{0x0f, 0x38, 0xc8, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
398 | "0f 38 c8 80 78 56 34 12 \tsha1nexte 0x12345678(%eax),%xmm0",}, | ||
399 | {{0x0f, 0x38, 0xc8, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
400 | "0f 38 c8 85 78 56 34 12 \tsha1nexte 0x12345678(%ebp),%xmm0",}, | ||
401 | {{0x0f, 0x38, 0xc8, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
402 | "0f 38 c8 84 01 78 56 34 12 \tsha1nexte 0x12345678(%ecx,%eax,1),%xmm0",}, | ||
403 | {{0x0f, 0x38, 0xc8, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
404 | "0f 38 c8 84 05 78 56 34 12 \tsha1nexte 0x12345678(%ebp,%eax,1),%xmm0",}, | ||
405 | {{0x0f, 0x38, 0xc8, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
406 | "0f 38 c8 84 08 78 56 34 12 \tsha1nexte 0x12345678(%eax,%ecx,1),%xmm0",}, | ||
407 | {{0x0f, 0x38, 0xc8, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
408 | "0f 38 c8 84 c8 78 56 34 12 \tsha1nexte 0x12345678(%eax,%ecx,8),%xmm0",}, | ||
409 | {{0x0f, 0x38, 0xc9, 0xc1, }, 4, 0, "", "", | ||
410 | "0f 38 c9 c1 \tsha1msg1 %xmm1,%xmm0",}, | ||
411 | {{0x0f, 0x38, 0xc9, 0xd7, }, 4, 0, "", "", | ||
412 | "0f 38 c9 d7 \tsha1msg1 %xmm7,%xmm2",}, | ||
413 | {{0x0f, 0x38, 0xc9, 0x00, }, 4, 0, "", "", | ||
414 | "0f 38 c9 00 \tsha1msg1 (%eax),%xmm0",}, | ||
415 | {{0x0f, 0x38, 0xc9, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
416 | "0f 38 c9 05 78 56 34 12 \tsha1msg1 0x12345678,%xmm0",}, | ||
417 | {{0x0f, 0x38, 0xc9, 0x18, }, 4, 0, "", "", | ||
418 | "0f 38 c9 18 \tsha1msg1 (%eax),%xmm3",}, | ||
419 | {{0x0f, 0x38, 0xc9, 0x04, 0x01, }, 5, 0, "", "", | ||
420 | "0f 38 c9 04 01 \tsha1msg1 (%ecx,%eax,1),%xmm0",}, | ||
421 | {{0x0f, 0x38, 0xc9, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
422 | "0f 38 c9 04 05 78 56 34 12 \tsha1msg1 0x12345678(,%eax,1),%xmm0",}, | ||
423 | {{0x0f, 0x38, 0xc9, 0x04, 0x08, }, 5, 0, "", "", | ||
424 | "0f 38 c9 04 08 \tsha1msg1 (%eax,%ecx,1),%xmm0",}, | ||
425 | {{0x0f, 0x38, 0xc9, 0x04, 0xc8, }, 5, 0, "", "", | ||
426 | "0f 38 c9 04 c8 \tsha1msg1 (%eax,%ecx,8),%xmm0",}, | ||
427 | {{0x0f, 0x38, 0xc9, 0x40, 0x12, }, 5, 0, "", "", | ||
428 | "0f 38 c9 40 12 \tsha1msg1 0x12(%eax),%xmm0",}, | ||
429 | {{0x0f, 0x38, 0xc9, 0x45, 0x12, }, 5, 0, "", "", | ||
430 | "0f 38 c9 45 12 \tsha1msg1 0x12(%ebp),%xmm0",}, | ||
431 | {{0x0f, 0x38, 0xc9, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
432 | "0f 38 c9 44 01 12 \tsha1msg1 0x12(%ecx,%eax,1),%xmm0",}, | ||
433 | {{0x0f, 0x38, 0xc9, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
434 | "0f 38 c9 44 05 12 \tsha1msg1 0x12(%ebp,%eax,1),%xmm0",}, | ||
435 | {{0x0f, 0x38, 0xc9, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
436 | "0f 38 c9 44 08 12 \tsha1msg1 0x12(%eax,%ecx,1),%xmm0",}, | ||
437 | {{0x0f, 0x38, 0xc9, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
438 | "0f 38 c9 44 c8 12 \tsha1msg1 0x12(%eax,%ecx,8),%xmm0",}, | ||
439 | {{0x0f, 0x38, 0xc9, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
440 | "0f 38 c9 80 78 56 34 12 \tsha1msg1 0x12345678(%eax),%xmm0",}, | ||
441 | {{0x0f, 0x38, 0xc9, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
442 | "0f 38 c9 85 78 56 34 12 \tsha1msg1 0x12345678(%ebp),%xmm0",}, | ||
443 | {{0x0f, 0x38, 0xc9, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
444 | "0f 38 c9 84 01 78 56 34 12 \tsha1msg1 0x12345678(%ecx,%eax,1),%xmm0",}, | ||
445 | {{0x0f, 0x38, 0xc9, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
446 | "0f 38 c9 84 05 78 56 34 12 \tsha1msg1 0x12345678(%ebp,%eax,1),%xmm0",}, | ||
447 | {{0x0f, 0x38, 0xc9, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
448 | "0f 38 c9 84 08 78 56 34 12 \tsha1msg1 0x12345678(%eax,%ecx,1),%xmm0",}, | ||
449 | {{0x0f, 0x38, 0xc9, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
450 | "0f 38 c9 84 c8 78 56 34 12 \tsha1msg1 0x12345678(%eax,%ecx,8),%xmm0",}, | ||
451 | {{0x0f, 0x38, 0xca, 0xc1, }, 4, 0, "", "", | ||
452 | "0f 38 ca c1 \tsha1msg2 %xmm1,%xmm0",}, | ||
453 | {{0x0f, 0x38, 0xca, 0xd7, }, 4, 0, "", "", | ||
454 | "0f 38 ca d7 \tsha1msg2 %xmm7,%xmm2",}, | ||
455 | {{0x0f, 0x38, 0xca, 0x00, }, 4, 0, "", "", | ||
456 | "0f 38 ca 00 \tsha1msg2 (%eax),%xmm0",}, | ||
457 | {{0x0f, 0x38, 0xca, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
458 | "0f 38 ca 05 78 56 34 12 \tsha1msg2 0x12345678,%xmm0",}, | ||
459 | {{0x0f, 0x38, 0xca, 0x18, }, 4, 0, "", "", | ||
460 | "0f 38 ca 18 \tsha1msg2 (%eax),%xmm3",}, | ||
461 | {{0x0f, 0x38, 0xca, 0x04, 0x01, }, 5, 0, "", "", | ||
462 | "0f 38 ca 04 01 \tsha1msg2 (%ecx,%eax,1),%xmm0",}, | ||
463 | {{0x0f, 0x38, 0xca, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
464 | "0f 38 ca 04 05 78 56 34 12 \tsha1msg2 0x12345678(,%eax,1),%xmm0",}, | ||
465 | {{0x0f, 0x38, 0xca, 0x04, 0x08, }, 5, 0, "", "", | ||
466 | "0f 38 ca 04 08 \tsha1msg2 (%eax,%ecx,1),%xmm0",}, | ||
467 | {{0x0f, 0x38, 0xca, 0x04, 0xc8, }, 5, 0, "", "", | ||
468 | "0f 38 ca 04 c8 \tsha1msg2 (%eax,%ecx,8),%xmm0",}, | ||
469 | {{0x0f, 0x38, 0xca, 0x40, 0x12, }, 5, 0, "", "", | ||
470 | "0f 38 ca 40 12 \tsha1msg2 0x12(%eax),%xmm0",}, | ||
471 | {{0x0f, 0x38, 0xca, 0x45, 0x12, }, 5, 0, "", "", | ||
472 | "0f 38 ca 45 12 \tsha1msg2 0x12(%ebp),%xmm0",}, | ||
473 | {{0x0f, 0x38, 0xca, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
474 | "0f 38 ca 44 01 12 \tsha1msg2 0x12(%ecx,%eax,1),%xmm0",}, | ||
475 | {{0x0f, 0x38, 0xca, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
476 | "0f 38 ca 44 05 12 \tsha1msg2 0x12(%ebp,%eax,1),%xmm0",}, | ||
477 | {{0x0f, 0x38, 0xca, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
478 | "0f 38 ca 44 08 12 \tsha1msg2 0x12(%eax,%ecx,1),%xmm0",}, | ||
479 | {{0x0f, 0x38, 0xca, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
480 | "0f 38 ca 44 c8 12 \tsha1msg2 0x12(%eax,%ecx,8),%xmm0",}, | ||
481 | {{0x0f, 0x38, 0xca, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
482 | "0f 38 ca 80 78 56 34 12 \tsha1msg2 0x12345678(%eax),%xmm0",}, | ||
483 | {{0x0f, 0x38, 0xca, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
484 | "0f 38 ca 85 78 56 34 12 \tsha1msg2 0x12345678(%ebp),%xmm0",}, | ||
485 | {{0x0f, 0x38, 0xca, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
486 | "0f 38 ca 84 01 78 56 34 12 \tsha1msg2 0x12345678(%ecx,%eax,1),%xmm0",}, | ||
487 | {{0x0f, 0x38, 0xca, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
488 | "0f 38 ca 84 05 78 56 34 12 \tsha1msg2 0x12345678(%ebp,%eax,1),%xmm0",}, | ||
489 | {{0x0f, 0x38, 0xca, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
490 | "0f 38 ca 84 08 78 56 34 12 \tsha1msg2 0x12345678(%eax,%ecx,1),%xmm0",}, | ||
491 | {{0x0f, 0x38, 0xca, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
492 | "0f 38 ca 84 c8 78 56 34 12 \tsha1msg2 0x12345678(%eax,%ecx,8),%xmm0",}, | ||
493 | {{0x0f, 0x38, 0xcb, 0xcc, }, 4, 0, "", "", | ||
494 | "0f 38 cb cc \tsha256rnds2 %xmm0,%xmm4,%xmm1",}, | ||
495 | {{0x0f, 0x38, 0xcb, 0xd7, }, 4, 0, "", "", | ||
496 | "0f 38 cb d7 \tsha256rnds2 %xmm0,%xmm7,%xmm2",}, | ||
497 | {{0x0f, 0x38, 0xcb, 0x08, }, 4, 0, "", "", | ||
498 | "0f 38 cb 08 \tsha256rnds2 %xmm0,(%eax),%xmm1",}, | ||
499 | {{0x0f, 0x38, 0xcb, 0x0d, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
500 | "0f 38 cb 0d 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678,%xmm1",}, | ||
501 | {{0x0f, 0x38, 0xcb, 0x18, }, 4, 0, "", "", | ||
502 | "0f 38 cb 18 \tsha256rnds2 %xmm0,(%eax),%xmm3",}, | ||
503 | {{0x0f, 0x38, 0xcb, 0x0c, 0x01, }, 5, 0, "", "", | ||
504 | "0f 38 cb 0c 01 \tsha256rnds2 %xmm0,(%ecx,%eax,1),%xmm1",}, | ||
505 | {{0x0f, 0x38, 0xcb, 0x0c, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
506 | "0f 38 cb 0c 05 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(,%eax,1),%xmm1",}, | ||
507 | {{0x0f, 0x38, 0xcb, 0x0c, 0x08, }, 5, 0, "", "", | ||
508 | "0f 38 cb 0c 08 \tsha256rnds2 %xmm0,(%eax,%ecx,1),%xmm1",}, | ||
509 | {{0x0f, 0x38, 0xcb, 0x0c, 0xc8, }, 5, 0, "", "", | ||
510 | "0f 38 cb 0c c8 \tsha256rnds2 %xmm0,(%eax,%ecx,8),%xmm1",}, | ||
511 | {{0x0f, 0x38, 0xcb, 0x48, 0x12, }, 5, 0, "", "", | ||
512 | "0f 38 cb 48 12 \tsha256rnds2 %xmm0,0x12(%eax),%xmm1",}, | ||
513 | {{0x0f, 0x38, 0xcb, 0x4d, 0x12, }, 5, 0, "", "", | ||
514 | "0f 38 cb 4d 12 \tsha256rnds2 %xmm0,0x12(%ebp),%xmm1",}, | ||
515 | {{0x0f, 0x38, 0xcb, 0x4c, 0x01, 0x12, }, 6, 0, "", "", | ||
516 | "0f 38 cb 4c 01 12 \tsha256rnds2 %xmm0,0x12(%ecx,%eax,1),%xmm1",}, | ||
517 | {{0x0f, 0x38, 0xcb, 0x4c, 0x05, 0x12, }, 6, 0, "", "", | ||
518 | "0f 38 cb 4c 05 12 \tsha256rnds2 %xmm0,0x12(%ebp,%eax,1),%xmm1",}, | ||
519 | {{0x0f, 0x38, 0xcb, 0x4c, 0x08, 0x12, }, 6, 0, "", "", | ||
520 | "0f 38 cb 4c 08 12 \tsha256rnds2 %xmm0,0x12(%eax,%ecx,1),%xmm1",}, | ||
521 | {{0x0f, 0x38, 0xcb, 0x4c, 0xc8, 0x12, }, 6, 0, "", "", | ||
522 | "0f 38 cb 4c c8 12 \tsha256rnds2 %xmm0,0x12(%eax,%ecx,8),%xmm1",}, | ||
523 | {{0x0f, 0x38, 0xcb, 0x88, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
524 | "0f 38 cb 88 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%eax),%xmm1",}, | ||
525 | {{0x0f, 0x38, 0xcb, 0x8d, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
526 | "0f 38 cb 8d 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%ebp),%xmm1",}, | ||
527 | {{0x0f, 0x38, 0xcb, 0x8c, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
528 | "0f 38 cb 8c 01 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%ecx,%eax,1),%xmm1",}, | ||
529 | {{0x0f, 0x38, 0xcb, 0x8c, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
530 | "0f 38 cb 8c 05 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%ebp,%eax,1),%xmm1",}, | ||
531 | {{0x0f, 0x38, 0xcb, 0x8c, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
532 | "0f 38 cb 8c 08 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%eax,%ecx,1),%xmm1",}, | ||
533 | {{0x0f, 0x38, 0xcb, 0x8c, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
534 | "0f 38 cb 8c c8 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%eax,%ecx,8),%xmm1",}, | ||
535 | {{0x0f, 0x38, 0xcc, 0xc1, }, 4, 0, "", "", | ||
536 | "0f 38 cc c1 \tsha256msg1 %xmm1,%xmm0",}, | ||
537 | {{0x0f, 0x38, 0xcc, 0xd7, }, 4, 0, "", "", | ||
538 | "0f 38 cc d7 \tsha256msg1 %xmm7,%xmm2",}, | ||
539 | {{0x0f, 0x38, 0xcc, 0x00, }, 4, 0, "", "", | ||
540 | "0f 38 cc 00 \tsha256msg1 (%eax),%xmm0",}, | ||
541 | {{0x0f, 0x38, 0xcc, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
542 | "0f 38 cc 05 78 56 34 12 \tsha256msg1 0x12345678,%xmm0",}, | ||
543 | {{0x0f, 0x38, 0xcc, 0x18, }, 4, 0, "", "", | ||
544 | "0f 38 cc 18 \tsha256msg1 (%eax),%xmm3",}, | ||
545 | {{0x0f, 0x38, 0xcc, 0x04, 0x01, }, 5, 0, "", "", | ||
546 | "0f 38 cc 04 01 \tsha256msg1 (%ecx,%eax,1),%xmm0",}, | ||
547 | {{0x0f, 0x38, 0xcc, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
548 | "0f 38 cc 04 05 78 56 34 12 \tsha256msg1 0x12345678(,%eax,1),%xmm0",}, | ||
549 | {{0x0f, 0x38, 0xcc, 0x04, 0x08, }, 5, 0, "", "", | ||
550 | "0f 38 cc 04 08 \tsha256msg1 (%eax,%ecx,1),%xmm0",}, | ||
551 | {{0x0f, 0x38, 0xcc, 0x04, 0xc8, }, 5, 0, "", "", | ||
552 | "0f 38 cc 04 c8 \tsha256msg1 (%eax,%ecx,8),%xmm0",}, | ||
553 | {{0x0f, 0x38, 0xcc, 0x40, 0x12, }, 5, 0, "", "", | ||
554 | "0f 38 cc 40 12 \tsha256msg1 0x12(%eax),%xmm0",}, | ||
555 | {{0x0f, 0x38, 0xcc, 0x45, 0x12, }, 5, 0, "", "", | ||
556 | "0f 38 cc 45 12 \tsha256msg1 0x12(%ebp),%xmm0",}, | ||
557 | {{0x0f, 0x38, 0xcc, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
558 | "0f 38 cc 44 01 12 \tsha256msg1 0x12(%ecx,%eax,1),%xmm0",}, | ||
559 | {{0x0f, 0x38, 0xcc, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
560 | "0f 38 cc 44 05 12 \tsha256msg1 0x12(%ebp,%eax,1),%xmm0",}, | ||
561 | {{0x0f, 0x38, 0xcc, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
562 | "0f 38 cc 44 08 12 \tsha256msg1 0x12(%eax,%ecx,1),%xmm0",}, | ||
563 | {{0x0f, 0x38, 0xcc, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
564 | "0f 38 cc 44 c8 12 \tsha256msg1 0x12(%eax,%ecx,8),%xmm0",}, | ||
565 | {{0x0f, 0x38, 0xcc, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
566 | "0f 38 cc 80 78 56 34 12 \tsha256msg1 0x12345678(%eax),%xmm0",}, | ||
567 | {{0x0f, 0x38, 0xcc, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
568 | "0f 38 cc 85 78 56 34 12 \tsha256msg1 0x12345678(%ebp),%xmm0",}, | ||
569 | {{0x0f, 0x38, 0xcc, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
570 | "0f 38 cc 84 01 78 56 34 12 \tsha256msg1 0x12345678(%ecx,%eax,1),%xmm0",}, | ||
571 | {{0x0f, 0x38, 0xcc, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
572 | "0f 38 cc 84 05 78 56 34 12 \tsha256msg1 0x12345678(%ebp,%eax,1),%xmm0",}, | ||
573 | {{0x0f, 0x38, 0xcc, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
574 | "0f 38 cc 84 08 78 56 34 12 \tsha256msg1 0x12345678(%eax,%ecx,1),%xmm0",}, | ||
575 | {{0x0f, 0x38, 0xcc, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
576 | "0f 38 cc 84 c8 78 56 34 12 \tsha256msg1 0x12345678(%eax,%ecx,8),%xmm0",}, | ||
577 | {{0x0f, 0x38, 0xcd, 0xc1, }, 4, 0, "", "", | ||
578 | "0f 38 cd c1 \tsha256msg2 %xmm1,%xmm0",}, | ||
579 | {{0x0f, 0x38, 0xcd, 0xd7, }, 4, 0, "", "", | ||
580 | "0f 38 cd d7 \tsha256msg2 %xmm7,%xmm2",}, | ||
581 | {{0x0f, 0x38, 0xcd, 0x00, }, 4, 0, "", "", | ||
582 | "0f 38 cd 00 \tsha256msg2 (%eax),%xmm0",}, | ||
583 | {{0x0f, 0x38, 0xcd, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
584 | "0f 38 cd 05 78 56 34 12 \tsha256msg2 0x12345678,%xmm0",}, | ||
585 | {{0x0f, 0x38, 0xcd, 0x18, }, 4, 0, "", "", | ||
586 | "0f 38 cd 18 \tsha256msg2 (%eax),%xmm3",}, | ||
587 | {{0x0f, 0x38, 0xcd, 0x04, 0x01, }, 5, 0, "", "", | ||
588 | "0f 38 cd 04 01 \tsha256msg2 (%ecx,%eax,1),%xmm0",}, | ||
589 | {{0x0f, 0x38, 0xcd, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
590 | "0f 38 cd 04 05 78 56 34 12 \tsha256msg2 0x12345678(,%eax,1),%xmm0",}, | ||
591 | {{0x0f, 0x38, 0xcd, 0x04, 0x08, }, 5, 0, "", "", | ||
592 | "0f 38 cd 04 08 \tsha256msg2 (%eax,%ecx,1),%xmm0",}, | ||
593 | {{0x0f, 0x38, 0xcd, 0x04, 0xc8, }, 5, 0, "", "", | ||
594 | "0f 38 cd 04 c8 \tsha256msg2 (%eax,%ecx,8),%xmm0",}, | ||
595 | {{0x0f, 0x38, 0xcd, 0x40, 0x12, }, 5, 0, "", "", | ||
596 | "0f 38 cd 40 12 \tsha256msg2 0x12(%eax),%xmm0",}, | ||
597 | {{0x0f, 0x38, 0xcd, 0x45, 0x12, }, 5, 0, "", "", | ||
598 | "0f 38 cd 45 12 \tsha256msg2 0x12(%ebp),%xmm0",}, | ||
599 | {{0x0f, 0x38, 0xcd, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
600 | "0f 38 cd 44 01 12 \tsha256msg2 0x12(%ecx,%eax,1),%xmm0",}, | ||
601 | {{0x0f, 0x38, 0xcd, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
602 | "0f 38 cd 44 05 12 \tsha256msg2 0x12(%ebp,%eax,1),%xmm0",}, | ||
603 | {{0x0f, 0x38, 0xcd, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
604 | "0f 38 cd 44 08 12 \tsha256msg2 0x12(%eax,%ecx,1),%xmm0",}, | ||
605 | {{0x0f, 0x38, 0xcd, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
606 | "0f 38 cd 44 c8 12 \tsha256msg2 0x12(%eax,%ecx,8),%xmm0",}, | ||
607 | {{0x0f, 0x38, 0xcd, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
608 | "0f 38 cd 80 78 56 34 12 \tsha256msg2 0x12345678(%eax),%xmm0",}, | ||
609 | {{0x0f, 0x38, 0xcd, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
610 | "0f 38 cd 85 78 56 34 12 \tsha256msg2 0x12345678(%ebp),%xmm0",}, | ||
611 | {{0x0f, 0x38, 0xcd, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
612 | "0f 38 cd 84 01 78 56 34 12 \tsha256msg2 0x12345678(%ecx,%eax,1),%xmm0",}, | ||
613 | {{0x0f, 0x38, 0xcd, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
614 | "0f 38 cd 84 05 78 56 34 12 \tsha256msg2 0x12345678(%ebp,%eax,1),%xmm0",}, | ||
615 | {{0x0f, 0x38, 0xcd, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
616 | "0f 38 cd 84 08 78 56 34 12 \tsha256msg2 0x12345678(%eax,%ecx,1),%xmm0",}, | ||
617 | {{0x0f, 0x38, 0xcd, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
618 | "0f 38 cd 84 c8 78 56 34 12 \tsha256msg2 0x12345678(%eax,%ecx,8),%xmm0",}, | ||
619 | {{0x66, 0x0f, 0xae, 0x38, }, 4, 0, "", "", | ||
620 | "66 0f ae 38 \tclflushopt (%eax)",}, | ||
621 | {{0x66, 0x0f, 0xae, 0x3d, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
622 | "66 0f ae 3d 78 56 34 12 \tclflushopt 0x12345678",}, | ||
623 | {{0x66, 0x0f, 0xae, 0xbc, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
624 | "66 0f ae bc c8 78 56 34 12 \tclflushopt 0x12345678(%eax,%ecx,8)",}, | ||
625 | {{0x0f, 0xae, 0x38, }, 3, 0, "", "", | ||
626 | "0f ae 38 \tclflush (%eax)",}, | ||
627 | {{0x0f, 0xae, 0xf8, }, 3, 0, "", "", | ||
628 | "0f ae f8 \tsfence ",}, | ||
629 | {{0x66, 0x0f, 0xae, 0x30, }, 4, 0, "", "", | ||
630 | "66 0f ae 30 \tclwb (%eax)",}, | ||
631 | {{0x66, 0x0f, 0xae, 0x35, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
632 | "66 0f ae 35 78 56 34 12 \tclwb 0x12345678",}, | ||
633 | {{0x66, 0x0f, 0xae, 0xb4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
634 | "66 0f ae b4 c8 78 56 34 12 \tclwb 0x12345678(%eax,%ecx,8)",}, | ||
635 | {{0x0f, 0xae, 0x30, }, 3, 0, "", "", | ||
636 | "0f ae 30 \txsaveopt (%eax)",}, | ||
637 | {{0x0f, 0xae, 0xf0, }, 3, 0, "", "", | ||
638 | "0f ae f0 \tmfence ",}, | ||
639 | {{0x0f, 0xc7, 0x20, }, 3, 0, "", "", | ||
640 | "0f c7 20 \txsavec (%eax)",}, | ||
641 | {{0x0f, 0xc7, 0x25, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
642 | "0f c7 25 78 56 34 12 \txsavec 0x12345678",}, | ||
643 | {{0x0f, 0xc7, 0xa4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
644 | "0f c7 a4 c8 78 56 34 12 \txsavec 0x12345678(%eax,%ecx,8)",}, | ||
645 | {{0x0f, 0xc7, 0x28, }, 3, 0, "", "", | ||
646 | "0f c7 28 \txsaves (%eax)",}, | ||
647 | {{0x0f, 0xc7, 0x2d, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
648 | "0f c7 2d 78 56 34 12 \txsaves 0x12345678",}, | ||
649 | {{0x0f, 0xc7, 0xac, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
650 | "0f c7 ac c8 78 56 34 12 \txsaves 0x12345678(%eax,%ecx,8)",}, | ||
651 | {{0x0f, 0xc7, 0x18, }, 3, 0, "", "", | ||
652 | "0f c7 18 \txrstors (%eax)",}, | ||
653 | {{0x0f, 0xc7, 0x1d, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
654 | "0f c7 1d 78 56 34 12 \txrstors 0x12345678",}, | ||
655 | {{0x0f, 0xc7, 0x9c, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
656 | "0f c7 9c c8 78 56 34 12 \txrstors 0x12345678(%eax,%ecx,8)",}, | ||
657 | {{0x66, 0x0f, 0xae, 0xf8, }, 4, 0, "", "", | ||
658 | "66 0f ae f8 \tpcommit ",}, | ||
diff --git a/tools/perf/arch/x86/tests/insn-x86-dat-64.c b/tools/perf/arch/x86/tests/insn-x86-dat-64.c new file mode 100644 index 000000000000..4fe7cce179c4 --- /dev/null +++ b/tools/perf/arch/x86/tests/insn-x86-dat-64.c | |||
@@ -0,0 +1,768 @@ | |||
1 | /* | ||
2 | * Generated by gen-insn-x86-dat.sh and gen-insn-x86-dat.awk | ||
3 | * from insn-x86-dat-src.c for inclusion by insn-x86.c | ||
4 | * Do not change this code. | ||
5 | */ | ||
6 | |||
7 | {{0x0f, 0x31, }, 2, 0, "", "", | ||
8 | "0f 31 \trdtsc ",}, | ||
9 | {{0xf3, 0x0f, 0x1b, 0x00, }, 4, 0, "", "", | ||
10 | "f3 0f 1b 00 \tbndmk (%rax),%bnd0",}, | ||
11 | {{0xf3, 0x41, 0x0f, 0x1b, 0x00, }, 5, 0, "", "", | ||
12 | "f3 41 0f 1b 00 \tbndmk (%r8),%bnd0",}, | ||
13 | {{0xf3, 0x0f, 0x1b, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
14 | "f3 0f 1b 04 25 78 56 34 12 \tbndmk 0x12345678,%bnd0",}, | ||
15 | {{0xf3, 0x0f, 0x1b, 0x18, }, 4, 0, "", "", | ||
16 | "f3 0f 1b 18 \tbndmk (%rax),%bnd3",}, | ||
17 | {{0xf3, 0x0f, 0x1b, 0x04, 0x01, }, 5, 0, "", "", | ||
18 | "f3 0f 1b 04 01 \tbndmk (%rcx,%rax,1),%bnd0",}, | ||
19 | {{0xf3, 0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
20 | "f3 0f 1b 04 05 78 56 34 12 \tbndmk 0x12345678(,%rax,1),%bnd0",}, | ||
21 | {{0xf3, 0x0f, 0x1b, 0x04, 0x08, }, 5, 0, "", "", | ||
22 | "f3 0f 1b 04 08 \tbndmk (%rax,%rcx,1),%bnd0",}, | ||
23 | {{0xf3, 0x0f, 0x1b, 0x04, 0xc8, }, 5, 0, "", "", | ||
24 | "f3 0f 1b 04 c8 \tbndmk (%rax,%rcx,8),%bnd0",}, | ||
25 | {{0xf3, 0x0f, 0x1b, 0x40, 0x12, }, 5, 0, "", "", | ||
26 | "f3 0f 1b 40 12 \tbndmk 0x12(%rax),%bnd0",}, | ||
27 | {{0xf3, 0x0f, 0x1b, 0x45, 0x12, }, 5, 0, "", "", | ||
28 | "f3 0f 1b 45 12 \tbndmk 0x12(%rbp),%bnd0",}, | ||
29 | {{0xf3, 0x0f, 0x1b, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
30 | "f3 0f 1b 44 01 12 \tbndmk 0x12(%rcx,%rax,1),%bnd0",}, | ||
31 | {{0xf3, 0x0f, 0x1b, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
32 | "f3 0f 1b 44 05 12 \tbndmk 0x12(%rbp,%rax,1),%bnd0",}, | ||
33 | {{0xf3, 0x0f, 0x1b, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
34 | "f3 0f 1b 44 08 12 \tbndmk 0x12(%rax,%rcx,1),%bnd0",}, | ||
35 | {{0xf3, 0x0f, 0x1b, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
36 | "f3 0f 1b 44 c8 12 \tbndmk 0x12(%rax,%rcx,8),%bnd0",}, | ||
37 | {{0xf3, 0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
38 | "f3 0f 1b 80 78 56 34 12 \tbndmk 0x12345678(%rax),%bnd0",}, | ||
39 | {{0xf3, 0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
40 | "f3 0f 1b 85 78 56 34 12 \tbndmk 0x12345678(%rbp),%bnd0",}, | ||
41 | {{0xf3, 0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
42 | "f3 0f 1b 84 01 78 56 34 12 \tbndmk 0x12345678(%rcx,%rax,1),%bnd0",}, | ||
43 | {{0xf3, 0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
44 | "f3 0f 1b 84 05 78 56 34 12 \tbndmk 0x12345678(%rbp,%rax,1),%bnd0",}, | ||
45 | {{0xf3, 0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
46 | "f3 0f 1b 84 08 78 56 34 12 \tbndmk 0x12345678(%rax,%rcx,1),%bnd0",}, | ||
47 | {{0xf3, 0x0f, 0x1b, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
48 | "f3 0f 1b 84 c8 78 56 34 12 \tbndmk 0x12345678(%rax,%rcx,8),%bnd0",}, | ||
49 | {{0xf3, 0x0f, 0x1a, 0x00, }, 4, 0, "", "", | ||
50 | "f3 0f 1a 00 \tbndcl (%rax),%bnd0",}, | ||
51 | {{0xf3, 0x41, 0x0f, 0x1a, 0x00, }, 5, 0, "", "", | ||
52 | "f3 41 0f 1a 00 \tbndcl (%r8),%bnd0",}, | ||
53 | {{0xf3, 0x0f, 0x1a, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
54 | "f3 0f 1a 04 25 78 56 34 12 \tbndcl 0x12345678,%bnd0",}, | ||
55 | {{0xf3, 0x0f, 0x1a, 0x18, }, 4, 0, "", "", | ||
56 | "f3 0f 1a 18 \tbndcl (%rax),%bnd3",}, | ||
57 | {{0xf3, 0x0f, 0x1a, 0x04, 0x01, }, 5, 0, "", "", | ||
58 | "f3 0f 1a 04 01 \tbndcl (%rcx,%rax,1),%bnd0",}, | ||
59 | {{0xf3, 0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
60 | "f3 0f 1a 04 05 78 56 34 12 \tbndcl 0x12345678(,%rax,1),%bnd0",}, | ||
61 | {{0xf3, 0x0f, 0x1a, 0x04, 0x08, }, 5, 0, "", "", | ||
62 | "f3 0f 1a 04 08 \tbndcl (%rax,%rcx,1),%bnd0",}, | ||
63 | {{0xf3, 0x0f, 0x1a, 0x04, 0xc8, }, 5, 0, "", "", | ||
64 | "f3 0f 1a 04 c8 \tbndcl (%rax,%rcx,8),%bnd0",}, | ||
65 | {{0xf3, 0x0f, 0x1a, 0x40, 0x12, }, 5, 0, "", "", | ||
66 | "f3 0f 1a 40 12 \tbndcl 0x12(%rax),%bnd0",}, | ||
67 | {{0xf3, 0x0f, 0x1a, 0x45, 0x12, }, 5, 0, "", "", | ||
68 | "f3 0f 1a 45 12 \tbndcl 0x12(%rbp),%bnd0",}, | ||
69 | {{0xf3, 0x0f, 0x1a, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
70 | "f3 0f 1a 44 01 12 \tbndcl 0x12(%rcx,%rax,1),%bnd0",}, | ||
71 | {{0xf3, 0x0f, 0x1a, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
72 | "f3 0f 1a 44 05 12 \tbndcl 0x12(%rbp,%rax,1),%bnd0",}, | ||
73 | {{0xf3, 0x0f, 0x1a, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
74 | "f3 0f 1a 44 08 12 \tbndcl 0x12(%rax,%rcx,1),%bnd0",}, | ||
75 | {{0xf3, 0x0f, 0x1a, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
76 | "f3 0f 1a 44 c8 12 \tbndcl 0x12(%rax,%rcx,8),%bnd0",}, | ||
77 | {{0xf3, 0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
78 | "f3 0f 1a 80 78 56 34 12 \tbndcl 0x12345678(%rax),%bnd0",}, | ||
79 | {{0xf3, 0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
80 | "f3 0f 1a 85 78 56 34 12 \tbndcl 0x12345678(%rbp),%bnd0",}, | ||
81 | {{0xf3, 0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
82 | "f3 0f 1a 84 01 78 56 34 12 \tbndcl 0x12345678(%rcx,%rax,1),%bnd0",}, | ||
83 | {{0xf3, 0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
84 | "f3 0f 1a 84 05 78 56 34 12 \tbndcl 0x12345678(%rbp,%rax,1),%bnd0",}, | ||
85 | {{0xf3, 0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
86 | "f3 0f 1a 84 08 78 56 34 12 \tbndcl 0x12345678(%rax,%rcx,1),%bnd0",}, | ||
87 | {{0xf3, 0x0f, 0x1a, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
88 | "f3 0f 1a 84 c8 78 56 34 12 \tbndcl 0x12345678(%rax,%rcx,8),%bnd0",}, | ||
89 | {{0xf3, 0x0f, 0x1a, 0xc0, }, 4, 0, "", "", | ||
90 | "f3 0f 1a c0 \tbndcl %rax,%bnd0",}, | ||
91 | {{0xf2, 0x0f, 0x1a, 0x00, }, 4, 0, "", "", | ||
92 | "f2 0f 1a 00 \tbndcu (%rax),%bnd0",}, | ||
93 | {{0xf2, 0x41, 0x0f, 0x1a, 0x00, }, 5, 0, "", "", | ||
94 | "f2 41 0f 1a 00 \tbndcu (%r8),%bnd0",}, | ||
95 | {{0xf2, 0x0f, 0x1a, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
96 | "f2 0f 1a 04 25 78 56 34 12 \tbndcu 0x12345678,%bnd0",}, | ||
97 | {{0xf2, 0x0f, 0x1a, 0x18, }, 4, 0, "", "", | ||
98 | "f2 0f 1a 18 \tbndcu (%rax),%bnd3",}, | ||
99 | {{0xf2, 0x0f, 0x1a, 0x04, 0x01, }, 5, 0, "", "", | ||
100 | "f2 0f 1a 04 01 \tbndcu (%rcx,%rax,1),%bnd0",}, | ||
101 | {{0xf2, 0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
102 | "f2 0f 1a 04 05 78 56 34 12 \tbndcu 0x12345678(,%rax,1),%bnd0",}, | ||
103 | {{0xf2, 0x0f, 0x1a, 0x04, 0x08, }, 5, 0, "", "", | ||
104 | "f2 0f 1a 04 08 \tbndcu (%rax,%rcx,1),%bnd0",}, | ||
105 | {{0xf2, 0x0f, 0x1a, 0x04, 0xc8, }, 5, 0, "", "", | ||
106 | "f2 0f 1a 04 c8 \tbndcu (%rax,%rcx,8),%bnd0",}, | ||
107 | {{0xf2, 0x0f, 0x1a, 0x40, 0x12, }, 5, 0, "", "", | ||
108 | "f2 0f 1a 40 12 \tbndcu 0x12(%rax),%bnd0",}, | ||
109 | {{0xf2, 0x0f, 0x1a, 0x45, 0x12, }, 5, 0, "", "", | ||
110 | "f2 0f 1a 45 12 \tbndcu 0x12(%rbp),%bnd0",}, | ||
111 | {{0xf2, 0x0f, 0x1a, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
112 | "f2 0f 1a 44 01 12 \tbndcu 0x12(%rcx,%rax,1),%bnd0",}, | ||
113 | {{0xf2, 0x0f, 0x1a, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
114 | "f2 0f 1a 44 05 12 \tbndcu 0x12(%rbp,%rax,1),%bnd0",}, | ||
115 | {{0xf2, 0x0f, 0x1a, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
116 | "f2 0f 1a 44 08 12 \tbndcu 0x12(%rax,%rcx,1),%bnd0",}, | ||
117 | {{0xf2, 0x0f, 0x1a, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
118 | "f2 0f 1a 44 c8 12 \tbndcu 0x12(%rax,%rcx,8),%bnd0",}, | ||
119 | {{0xf2, 0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
120 | "f2 0f 1a 80 78 56 34 12 \tbndcu 0x12345678(%rax),%bnd0",}, | ||
121 | {{0xf2, 0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
122 | "f2 0f 1a 85 78 56 34 12 \tbndcu 0x12345678(%rbp),%bnd0",}, | ||
123 | {{0xf2, 0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
124 | "f2 0f 1a 84 01 78 56 34 12 \tbndcu 0x12345678(%rcx,%rax,1),%bnd0",}, | ||
125 | {{0xf2, 0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
126 | "f2 0f 1a 84 05 78 56 34 12 \tbndcu 0x12345678(%rbp,%rax,1),%bnd0",}, | ||
127 | {{0xf2, 0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
128 | "f2 0f 1a 84 08 78 56 34 12 \tbndcu 0x12345678(%rax,%rcx,1),%bnd0",}, | ||
129 | {{0xf2, 0x0f, 0x1a, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
130 | "f2 0f 1a 84 c8 78 56 34 12 \tbndcu 0x12345678(%rax,%rcx,8),%bnd0",}, | ||
131 | {{0xf2, 0x0f, 0x1a, 0xc0, }, 4, 0, "", "", | ||
132 | "f2 0f 1a c0 \tbndcu %rax,%bnd0",}, | ||
133 | {{0xf2, 0x0f, 0x1b, 0x00, }, 4, 0, "", "", | ||
134 | "f2 0f 1b 00 \tbndcn (%rax),%bnd0",}, | ||
135 | {{0xf2, 0x41, 0x0f, 0x1b, 0x00, }, 5, 0, "", "", | ||
136 | "f2 41 0f 1b 00 \tbndcn (%r8),%bnd0",}, | ||
137 | {{0xf2, 0x0f, 0x1b, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
138 | "f2 0f 1b 04 25 78 56 34 12 \tbndcn 0x12345678,%bnd0",}, | ||
139 | {{0xf2, 0x0f, 0x1b, 0x18, }, 4, 0, "", "", | ||
140 | "f2 0f 1b 18 \tbndcn (%rax),%bnd3",}, | ||
141 | {{0xf2, 0x0f, 0x1b, 0x04, 0x01, }, 5, 0, "", "", | ||
142 | "f2 0f 1b 04 01 \tbndcn (%rcx,%rax,1),%bnd0",}, | ||
143 | {{0xf2, 0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
144 | "f2 0f 1b 04 05 78 56 34 12 \tbndcn 0x12345678(,%rax,1),%bnd0",}, | ||
145 | {{0xf2, 0x0f, 0x1b, 0x04, 0x08, }, 5, 0, "", "", | ||
146 | "f2 0f 1b 04 08 \tbndcn (%rax,%rcx,1),%bnd0",}, | ||
147 | {{0xf2, 0x0f, 0x1b, 0x04, 0xc8, }, 5, 0, "", "", | ||
148 | "f2 0f 1b 04 c8 \tbndcn (%rax,%rcx,8),%bnd0",}, | ||
149 | {{0xf2, 0x0f, 0x1b, 0x40, 0x12, }, 5, 0, "", "", | ||
150 | "f2 0f 1b 40 12 \tbndcn 0x12(%rax),%bnd0",}, | ||
151 | {{0xf2, 0x0f, 0x1b, 0x45, 0x12, }, 5, 0, "", "", | ||
152 | "f2 0f 1b 45 12 \tbndcn 0x12(%rbp),%bnd0",}, | ||
153 | {{0xf2, 0x0f, 0x1b, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
154 | "f2 0f 1b 44 01 12 \tbndcn 0x12(%rcx,%rax,1),%bnd0",}, | ||
155 | {{0xf2, 0x0f, 0x1b, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
156 | "f2 0f 1b 44 05 12 \tbndcn 0x12(%rbp,%rax,1),%bnd0",}, | ||
157 | {{0xf2, 0x0f, 0x1b, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
158 | "f2 0f 1b 44 08 12 \tbndcn 0x12(%rax,%rcx,1),%bnd0",}, | ||
159 | {{0xf2, 0x0f, 0x1b, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
160 | "f2 0f 1b 44 c8 12 \tbndcn 0x12(%rax,%rcx,8),%bnd0",}, | ||
161 | {{0xf2, 0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
162 | "f2 0f 1b 80 78 56 34 12 \tbndcn 0x12345678(%rax),%bnd0",}, | ||
163 | {{0xf2, 0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
164 | "f2 0f 1b 85 78 56 34 12 \tbndcn 0x12345678(%rbp),%bnd0",}, | ||
165 | {{0xf2, 0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
166 | "f2 0f 1b 84 01 78 56 34 12 \tbndcn 0x12345678(%rcx,%rax,1),%bnd0",}, | ||
167 | {{0xf2, 0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
168 | "f2 0f 1b 84 05 78 56 34 12 \tbndcn 0x12345678(%rbp,%rax,1),%bnd0",}, | ||
169 | {{0xf2, 0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
170 | "f2 0f 1b 84 08 78 56 34 12 \tbndcn 0x12345678(%rax,%rcx,1),%bnd0",}, | ||
171 | {{0xf2, 0x0f, 0x1b, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
172 | "f2 0f 1b 84 c8 78 56 34 12 \tbndcn 0x12345678(%rax,%rcx,8),%bnd0",}, | ||
173 | {{0xf2, 0x0f, 0x1b, 0xc0, }, 4, 0, "", "", | ||
174 | "f2 0f 1b c0 \tbndcn %rax,%bnd0",}, | ||
175 | {{0x66, 0x0f, 0x1a, 0x00, }, 4, 0, "", "", | ||
176 | "66 0f 1a 00 \tbndmov (%rax),%bnd0",}, | ||
177 | {{0x66, 0x41, 0x0f, 0x1a, 0x00, }, 5, 0, "", "", | ||
178 | "66 41 0f 1a 00 \tbndmov (%r8),%bnd0",}, | ||
179 | {{0x66, 0x0f, 0x1a, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
180 | "66 0f 1a 04 25 78 56 34 12 \tbndmov 0x12345678,%bnd0",}, | ||
181 | {{0x66, 0x0f, 0x1a, 0x18, }, 4, 0, "", "", | ||
182 | "66 0f 1a 18 \tbndmov (%rax),%bnd3",}, | ||
183 | {{0x66, 0x0f, 0x1a, 0x04, 0x01, }, 5, 0, "", "", | ||
184 | "66 0f 1a 04 01 \tbndmov (%rcx,%rax,1),%bnd0",}, | ||
185 | {{0x66, 0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
186 | "66 0f 1a 04 05 78 56 34 12 \tbndmov 0x12345678(,%rax,1),%bnd0",}, | ||
187 | {{0x66, 0x0f, 0x1a, 0x04, 0x08, }, 5, 0, "", "", | ||
188 | "66 0f 1a 04 08 \tbndmov (%rax,%rcx,1),%bnd0",}, | ||
189 | {{0x66, 0x0f, 0x1a, 0x04, 0xc8, }, 5, 0, "", "", | ||
190 | "66 0f 1a 04 c8 \tbndmov (%rax,%rcx,8),%bnd0",}, | ||
191 | {{0x66, 0x0f, 0x1a, 0x40, 0x12, }, 5, 0, "", "", | ||
192 | "66 0f 1a 40 12 \tbndmov 0x12(%rax),%bnd0",}, | ||
193 | {{0x66, 0x0f, 0x1a, 0x45, 0x12, }, 5, 0, "", "", | ||
194 | "66 0f 1a 45 12 \tbndmov 0x12(%rbp),%bnd0",}, | ||
195 | {{0x66, 0x0f, 0x1a, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
196 | "66 0f 1a 44 01 12 \tbndmov 0x12(%rcx,%rax,1),%bnd0",}, | ||
197 | {{0x66, 0x0f, 0x1a, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
198 | "66 0f 1a 44 05 12 \tbndmov 0x12(%rbp,%rax,1),%bnd0",}, | ||
199 | {{0x66, 0x0f, 0x1a, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
200 | "66 0f 1a 44 08 12 \tbndmov 0x12(%rax,%rcx,1),%bnd0",}, | ||
201 | {{0x66, 0x0f, 0x1a, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
202 | "66 0f 1a 44 c8 12 \tbndmov 0x12(%rax,%rcx,8),%bnd0",}, | ||
203 | {{0x66, 0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
204 | "66 0f 1a 80 78 56 34 12 \tbndmov 0x12345678(%rax),%bnd0",}, | ||
205 | {{0x66, 0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
206 | "66 0f 1a 85 78 56 34 12 \tbndmov 0x12345678(%rbp),%bnd0",}, | ||
207 | {{0x66, 0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
208 | "66 0f 1a 84 01 78 56 34 12 \tbndmov 0x12345678(%rcx,%rax,1),%bnd0",}, | ||
209 | {{0x66, 0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
210 | "66 0f 1a 84 05 78 56 34 12 \tbndmov 0x12345678(%rbp,%rax,1),%bnd0",}, | ||
211 | {{0x66, 0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
212 | "66 0f 1a 84 08 78 56 34 12 \tbndmov 0x12345678(%rax,%rcx,1),%bnd0",}, | ||
213 | {{0x66, 0x0f, 0x1a, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
214 | "66 0f 1a 84 c8 78 56 34 12 \tbndmov 0x12345678(%rax,%rcx,8),%bnd0",}, | ||
215 | {{0x66, 0x0f, 0x1b, 0x00, }, 4, 0, "", "", | ||
216 | "66 0f 1b 00 \tbndmov %bnd0,(%rax)",}, | ||
217 | {{0x66, 0x41, 0x0f, 0x1b, 0x00, }, 5, 0, "", "", | ||
218 | "66 41 0f 1b 00 \tbndmov %bnd0,(%r8)",}, | ||
219 | {{0x66, 0x0f, 0x1b, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
220 | "66 0f 1b 04 25 78 56 34 12 \tbndmov %bnd0,0x12345678",}, | ||
221 | {{0x66, 0x0f, 0x1b, 0x18, }, 4, 0, "", "", | ||
222 | "66 0f 1b 18 \tbndmov %bnd3,(%rax)",}, | ||
223 | {{0x66, 0x0f, 0x1b, 0x04, 0x01, }, 5, 0, "", "", | ||
224 | "66 0f 1b 04 01 \tbndmov %bnd0,(%rcx,%rax,1)",}, | ||
225 | {{0x66, 0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
226 | "66 0f 1b 04 05 78 56 34 12 \tbndmov %bnd0,0x12345678(,%rax,1)",}, | ||
227 | {{0x66, 0x0f, 0x1b, 0x04, 0x08, }, 5, 0, "", "", | ||
228 | "66 0f 1b 04 08 \tbndmov %bnd0,(%rax,%rcx,1)",}, | ||
229 | {{0x66, 0x0f, 0x1b, 0x04, 0xc8, }, 5, 0, "", "", | ||
230 | "66 0f 1b 04 c8 \tbndmov %bnd0,(%rax,%rcx,8)",}, | ||
231 | {{0x66, 0x0f, 0x1b, 0x40, 0x12, }, 5, 0, "", "", | ||
232 | "66 0f 1b 40 12 \tbndmov %bnd0,0x12(%rax)",}, | ||
233 | {{0x66, 0x0f, 0x1b, 0x45, 0x12, }, 5, 0, "", "", | ||
234 | "66 0f 1b 45 12 \tbndmov %bnd0,0x12(%rbp)",}, | ||
235 | {{0x66, 0x0f, 0x1b, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
236 | "66 0f 1b 44 01 12 \tbndmov %bnd0,0x12(%rcx,%rax,1)",}, | ||
237 | {{0x66, 0x0f, 0x1b, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
238 | "66 0f 1b 44 05 12 \tbndmov %bnd0,0x12(%rbp,%rax,1)",}, | ||
239 | {{0x66, 0x0f, 0x1b, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
240 | "66 0f 1b 44 08 12 \tbndmov %bnd0,0x12(%rax,%rcx,1)",}, | ||
241 | {{0x66, 0x0f, 0x1b, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
242 | "66 0f 1b 44 c8 12 \tbndmov %bnd0,0x12(%rax,%rcx,8)",}, | ||
243 | {{0x66, 0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
244 | "66 0f 1b 80 78 56 34 12 \tbndmov %bnd0,0x12345678(%rax)",}, | ||
245 | {{0x66, 0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
246 | "66 0f 1b 85 78 56 34 12 \tbndmov %bnd0,0x12345678(%rbp)",}, | ||
247 | {{0x66, 0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
248 | "66 0f 1b 84 01 78 56 34 12 \tbndmov %bnd0,0x12345678(%rcx,%rax,1)",}, | ||
249 | {{0x66, 0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
250 | "66 0f 1b 84 05 78 56 34 12 \tbndmov %bnd0,0x12345678(%rbp,%rax,1)",}, | ||
251 | {{0x66, 0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
252 | "66 0f 1b 84 08 78 56 34 12 \tbndmov %bnd0,0x12345678(%rax,%rcx,1)",}, | ||
253 | {{0x66, 0x0f, 0x1b, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
254 | "66 0f 1b 84 c8 78 56 34 12 \tbndmov %bnd0,0x12345678(%rax,%rcx,8)",}, | ||
255 | {{0x66, 0x0f, 0x1a, 0xc8, }, 4, 0, "", "", | ||
256 | "66 0f 1a c8 \tbndmov %bnd0,%bnd1",}, | ||
257 | {{0x66, 0x0f, 0x1a, 0xc1, }, 4, 0, "", "", | ||
258 | "66 0f 1a c1 \tbndmov %bnd1,%bnd0",}, | ||
259 | {{0x0f, 0x1a, 0x00, }, 3, 0, "", "", | ||
260 | "0f 1a 00 \tbndldx (%rax),%bnd0",}, | ||
261 | {{0x41, 0x0f, 0x1a, 0x00, }, 4, 0, "", "", | ||
262 | "41 0f 1a 00 \tbndldx (%r8),%bnd0",}, | ||
263 | {{0x0f, 0x1a, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
264 | "0f 1a 04 25 78 56 34 12 \tbndldx 0x12345678,%bnd0",}, | ||
265 | {{0x0f, 0x1a, 0x18, }, 3, 0, "", "", | ||
266 | "0f 1a 18 \tbndldx (%rax),%bnd3",}, | ||
267 | {{0x0f, 0x1a, 0x04, 0x01, }, 4, 0, "", "", | ||
268 | "0f 1a 04 01 \tbndldx (%rcx,%rax,1),%bnd0",}, | ||
269 | {{0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
270 | "0f 1a 04 05 78 56 34 12 \tbndldx 0x12345678(,%rax,1),%bnd0",}, | ||
271 | {{0x0f, 0x1a, 0x04, 0x08, }, 4, 0, "", "", | ||
272 | "0f 1a 04 08 \tbndldx (%rax,%rcx,1),%bnd0",}, | ||
273 | {{0x0f, 0x1a, 0x40, 0x12, }, 4, 0, "", "", | ||
274 | "0f 1a 40 12 \tbndldx 0x12(%rax),%bnd0",}, | ||
275 | {{0x0f, 0x1a, 0x45, 0x12, }, 4, 0, "", "", | ||
276 | "0f 1a 45 12 \tbndldx 0x12(%rbp),%bnd0",}, | ||
277 | {{0x0f, 0x1a, 0x44, 0x01, 0x12, }, 5, 0, "", "", | ||
278 | "0f 1a 44 01 12 \tbndldx 0x12(%rcx,%rax,1),%bnd0",}, | ||
279 | {{0x0f, 0x1a, 0x44, 0x05, 0x12, }, 5, 0, "", "", | ||
280 | "0f 1a 44 05 12 \tbndldx 0x12(%rbp,%rax,1),%bnd0",}, | ||
281 | {{0x0f, 0x1a, 0x44, 0x08, 0x12, }, 5, 0, "", "", | ||
282 | "0f 1a 44 08 12 \tbndldx 0x12(%rax,%rcx,1),%bnd0",}, | ||
283 | {{0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
284 | "0f 1a 80 78 56 34 12 \tbndldx 0x12345678(%rax),%bnd0",}, | ||
285 | {{0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
286 | "0f 1a 85 78 56 34 12 \tbndldx 0x12345678(%rbp),%bnd0",}, | ||
287 | {{0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
288 | "0f 1a 84 01 78 56 34 12 \tbndldx 0x12345678(%rcx,%rax,1),%bnd0",}, | ||
289 | {{0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
290 | "0f 1a 84 05 78 56 34 12 \tbndldx 0x12345678(%rbp,%rax,1),%bnd0",}, | ||
291 | {{0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
292 | "0f 1a 84 08 78 56 34 12 \tbndldx 0x12345678(%rax,%rcx,1),%bnd0",}, | ||
293 | {{0x0f, 0x1b, 0x00, }, 3, 0, "", "", | ||
294 | "0f 1b 00 \tbndstx %bnd0,(%rax)",}, | ||
295 | {{0x41, 0x0f, 0x1b, 0x00, }, 4, 0, "", "", | ||
296 | "41 0f 1b 00 \tbndstx %bnd0,(%r8)",}, | ||
297 | {{0x0f, 0x1b, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
298 | "0f 1b 04 25 78 56 34 12 \tbndstx %bnd0,0x12345678",}, | ||
299 | {{0x0f, 0x1b, 0x18, }, 3, 0, "", "", | ||
300 | "0f 1b 18 \tbndstx %bnd3,(%rax)",}, | ||
301 | {{0x0f, 0x1b, 0x04, 0x01, }, 4, 0, "", "", | ||
302 | "0f 1b 04 01 \tbndstx %bnd0,(%rcx,%rax,1)",}, | ||
303 | {{0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
304 | "0f 1b 04 05 78 56 34 12 \tbndstx %bnd0,0x12345678(,%rax,1)",}, | ||
305 | {{0x0f, 0x1b, 0x04, 0x08, }, 4, 0, "", "", | ||
306 | "0f 1b 04 08 \tbndstx %bnd0,(%rax,%rcx,1)",}, | ||
307 | {{0x0f, 0x1b, 0x40, 0x12, }, 4, 0, "", "", | ||
308 | "0f 1b 40 12 \tbndstx %bnd0,0x12(%rax)",}, | ||
309 | {{0x0f, 0x1b, 0x45, 0x12, }, 4, 0, "", "", | ||
310 | "0f 1b 45 12 \tbndstx %bnd0,0x12(%rbp)",}, | ||
311 | {{0x0f, 0x1b, 0x44, 0x01, 0x12, }, 5, 0, "", "", | ||
312 | "0f 1b 44 01 12 \tbndstx %bnd0,0x12(%rcx,%rax,1)",}, | ||
313 | {{0x0f, 0x1b, 0x44, 0x05, 0x12, }, 5, 0, "", "", | ||
314 | "0f 1b 44 05 12 \tbndstx %bnd0,0x12(%rbp,%rax,1)",}, | ||
315 | {{0x0f, 0x1b, 0x44, 0x08, 0x12, }, 5, 0, "", "", | ||
316 | "0f 1b 44 08 12 \tbndstx %bnd0,0x12(%rax,%rcx,1)",}, | ||
317 | {{0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
318 | "0f 1b 80 78 56 34 12 \tbndstx %bnd0,0x12345678(%rax)",}, | ||
319 | {{0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "", | ||
320 | "0f 1b 85 78 56 34 12 \tbndstx %bnd0,0x12345678(%rbp)",}, | ||
321 | {{0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
322 | "0f 1b 84 01 78 56 34 12 \tbndstx %bnd0,0x12345678(%rcx,%rax,1)",}, | ||
323 | {{0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
324 | "0f 1b 84 05 78 56 34 12 \tbndstx %bnd0,0x12345678(%rbp,%rax,1)",}, | ||
325 | {{0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
326 | "0f 1b 84 08 78 56 34 12 \tbndstx %bnd0,0x12345678(%rax,%rcx,1)",}, | ||
327 | {{0xf2, 0xe8, 0x00, 0x00, 0x00, 0x00, }, 6, 0, "call", "unconditional", | ||
328 | "f2 e8 00 00 00 00 \tbnd callq 3f6 <main+0x3f6>",}, | ||
329 | {{0x67, 0xf2, 0xff, 0x10, }, 4, 0, "call", "indirect", | ||
330 | "67 f2 ff 10 \tbnd callq *(%eax)",}, | ||
331 | {{0xf2, 0xc3, }, 2, 0, "ret", "indirect", | ||
332 | "f2 c3 \tbnd retq ",}, | ||
333 | {{0xf2, 0xe9, 0x00, 0x00, 0x00, 0x00, }, 6, 0, "jmp", "unconditional", | ||
334 | "f2 e9 00 00 00 00 \tbnd jmpq 402 <main+0x402>",}, | ||
335 | {{0xf2, 0xe9, 0x00, 0x00, 0x00, 0x00, }, 6, 0, "jmp", "unconditional", | ||
336 | "f2 e9 00 00 00 00 \tbnd jmpq 408 <main+0x408>",}, | ||
337 | {{0x67, 0xf2, 0xff, 0x21, }, 4, 0, "jmp", "indirect", | ||
338 | "67 f2 ff 21 \tbnd jmpq *(%ecx)",}, | ||
339 | {{0xf2, 0x0f, 0x85, 0x00, 0x00, 0x00, 0x00, }, 7, 0, "jcc", "conditional", | ||
340 | "f2 0f 85 00 00 00 00 \tbnd jne 413 <main+0x413>",}, | ||
341 | {{0x0f, 0x3a, 0xcc, 0xc1, 0x00, }, 5, 0, "", "", | ||
342 | "0f 3a cc c1 00 \tsha1rnds4 $0x0,%xmm1,%xmm0",}, | ||
343 | {{0x0f, 0x3a, 0xcc, 0xd7, 0x91, }, 5, 0, "", "", | ||
344 | "0f 3a cc d7 91 \tsha1rnds4 $0x91,%xmm7,%xmm2",}, | ||
345 | {{0x41, 0x0f, 0x3a, 0xcc, 0xc0, 0x91, }, 6, 0, "", "", | ||
346 | "41 0f 3a cc c0 91 \tsha1rnds4 $0x91,%xmm8,%xmm0",}, | ||
347 | {{0x44, 0x0f, 0x3a, 0xcc, 0xc7, 0x91, }, 6, 0, "", "", | ||
348 | "44 0f 3a cc c7 91 \tsha1rnds4 $0x91,%xmm7,%xmm8",}, | ||
349 | {{0x45, 0x0f, 0x3a, 0xcc, 0xc7, 0x91, }, 6, 0, "", "", | ||
350 | "45 0f 3a cc c7 91 \tsha1rnds4 $0x91,%xmm15,%xmm8",}, | ||
351 | {{0x0f, 0x3a, 0xcc, 0x00, 0x91, }, 5, 0, "", "", | ||
352 | "0f 3a cc 00 91 \tsha1rnds4 $0x91,(%rax),%xmm0",}, | ||
353 | {{0x41, 0x0f, 0x3a, 0xcc, 0x00, 0x91, }, 6, 0, "", "", | ||
354 | "41 0f 3a cc 00 91 \tsha1rnds4 $0x91,(%r8),%xmm0",}, | ||
355 | {{0x0f, 0x3a, 0xcc, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
356 | "0f 3a cc 04 25 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678,%xmm0",}, | ||
357 | {{0x0f, 0x3a, 0xcc, 0x18, 0x91, }, 5, 0, "", "", | ||
358 | "0f 3a cc 18 91 \tsha1rnds4 $0x91,(%rax),%xmm3",}, | ||
359 | {{0x0f, 0x3a, 0xcc, 0x04, 0x01, 0x91, }, 6, 0, "", "", | ||
360 | "0f 3a cc 04 01 91 \tsha1rnds4 $0x91,(%rcx,%rax,1),%xmm0",}, | ||
361 | {{0x0f, 0x3a, 0xcc, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
362 | "0f 3a cc 04 05 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(,%rax,1),%xmm0",}, | ||
363 | {{0x0f, 0x3a, 0xcc, 0x04, 0x08, 0x91, }, 6, 0, "", "", | ||
364 | "0f 3a cc 04 08 91 \tsha1rnds4 $0x91,(%rax,%rcx,1),%xmm0",}, | ||
365 | {{0x0f, 0x3a, 0xcc, 0x04, 0xc8, 0x91, }, 6, 0, "", "", | ||
366 | "0f 3a cc 04 c8 91 \tsha1rnds4 $0x91,(%rax,%rcx,8),%xmm0",}, | ||
367 | {{0x0f, 0x3a, 0xcc, 0x40, 0x12, 0x91, }, 6, 0, "", "", | ||
368 | "0f 3a cc 40 12 91 \tsha1rnds4 $0x91,0x12(%rax),%xmm0",}, | ||
369 | {{0x0f, 0x3a, 0xcc, 0x45, 0x12, 0x91, }, 6, 0, "", "", | ||
370 | "0f 3a cc 45 12 91 \tsha1rnds4 $0x91,0x12(%rbp),%xmm0",}, | ||
371 | {{0x0f, 0x3a, 0xcc, 0x44, 0x01, 0x12, 0x91, }, 7, 0, "", "", | ||
372 | "0f 3a cc 44 01 12 91 \tsha1rnds4 $0x91,0x12(%rcx,%rax,1),%xmm0",}, | ||
373 | {{0x0f, 0x3a, 0xcc, 0x44, 0x05, 0x12, 0x91, }, 7, 0, "", "", | ||
374 | "0f 3a cc 44 05 12 91 \tsha1rnds4 $0x91,0x12(%rbp,%rax,1),%xmm0",}, | ||
375 | {{0x0f, 0x3a, 0xcc, 0x44, 0x08, 0x12, 0x91, }, 7, 0, "", "", | ||
376 | "0f 3a cc 44 08 12 91 \tsha1rnds4 $0x91,0x12(%rax,%rcx,1),%xmm0",}, | ||
377 | {{0x0f, 0x3a, 0xcc, 0x44, 0xc8, 0x12, 0x91, }, 7, 0, "", "", | ||
378 | "0f 3a cc 44 c8 12 91 \tsha1rnds4 $0x91,0x12(%rax,%rcx,8),%xmm0",}, | ||
379 | {{0x0f, 0x3a, 0xcc, 0x80, 0x78, 0x56, 0x34, 0x12, 0x91, }, 9, 0, "", "", | ||
380 | "0f 3a cc 80 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%rax),%xmm0",}, | ||
381 | {{0x0f, 0x3a, 0xcc, 0x85, 0x78, 0x56, 0x34, 0x12, 0x91, }, 9, 0, "", "", | ||
382 | "0f 3a cc 85 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%rbp),%xmm0",}, | ||
383 | {{0x0f, 0x3a, 0xcc, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
384 | "0f 3a cc 84 01 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%rcx,%rax,1),%xmm0",}, | ||
385 | {{0x0f, 0x3a, 0xcc, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
386 | "0f 3a cc 84 05 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%rbp,%rax,1),%xmm0",}, | ||
387 | {{0x0f, 0x3a, 0xcc, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
388 | "0f 3a cc 84 08 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%rax,%rcx,1),%xmm0",}, | ||
389 | {{0x0f, 0x3a, 0xcc, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, 0x91, }, 10, 0, "", "", | ||
390 | "0f 3a cc 84 c8 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%rax,%rcx,8),%xmm0",}, | ||
391 | {{0x44, 0x0f, 0x3a, 0xcc, 0xbc, 0xc8, 0x78, 0x56, 0x34, 0x12, 0x91, }, 11, 0, "", "", | ||
392 | "44 0f 3a cc bc c8 78 56 34 12 91 \tsha1rnds4 $0x91,0x12345678(%rax,%rcx,8),%xmm15",}, | ||
393 | {{0x0f, 0x38, 0xc8, 0xc1, }, 4, 0, "", "", | ||
394 | "0f 38 c8 c1 \tsha1nexte %xmm1,%xmm0",}, | ||
395 | {{0x0f, 0x38, 0xc8, 0xd7, }, 4, 0, "", "", | ||
396 | "0f 38 c8 d7 \tsha1nexte %xmm7,%xmm2",}, | ||
397 | {{0x41, 0x0f, 0x38, 0xc8, 0xc0, }, 5, 0, "", "", | ||
398 | "41 0f 38 c8 c0 \tsha1nexte %xmm8,%xmm0",}, | ||
399 | {{0x44, 0x0f, 0x38, 0xc8, 0xc7, }, 5, 0, "", "", | ||
400 | "44 0f 38 c8 c7 \tsha1nexte %xmm7,%xmm8",}, | ||
401 | {{0x45, 0x0f, 0x38, 0xc8, 0xc7, }, 5, 0, "", "", | ||
402 | "45 0f 38 c8 c7 \tsha1nexte %xmm15,%xmm8",}, | ||
403 | {{0x0f, 0x38, 0xc8, 0x00, }, 4, 0, "", "", | ||
404 | "0f 38 c8 00 \tsha1nexte (%rax),%xmm0",}, | ||
405 | {{0x41, 0x0f, 0x38, 0xc8, 0x00, }, 5, 0, "", "", | ||
406 | "41 0f 38 c8 00 \tsha1nexte (%r8),%xmm0",}, | ||
407 | {{0x0f, 0x38, 0xc8, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
408 | "0f 38 c8 04 25 78 56 34 12 \tsha1nexte 0x12345678,%xmm0",}, | ||
409 | {{0x0f, 0x38, 0xc8, 0x18, }, 4, 0, "", "", | ||
410 | "0f 38 c8 18 \tsha1nexte (%rax),%xmm3",}, | ||
411 | {{0x0f, 0x38, 0xc8, 0x04, 0x01, }, 5, 0, "", "", | ||
412 | "0f 38 c8 04 01 \tsha1nexte (%rcx,%rax,1),%xmm0",}, | ||
413 | {{0x0f, 0x38, 0xc8, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
414 | "0f 38 c8 04 05 78 56 34 12 \tsha1nexte 0x12345678(,%rax,1),%xmm0",}, | ||
415 | {{0x0f, 0x38, 0xc8, 0x04, 0x08, }, 5, 0, "", "", | ||
416 | "0f 38 c8 04 08 \tsha1nexte (%rax,%rcx,1),%xmm0",}, | ||
417 | {{0x0f, 0x38, 0xc8, 0x04, 0xc8, }, 5, 0, "", "", | ||
418 | "0f 38 c8 04 c8 \tsha1nexte (%rax,%rcx,8),%xmm0",}, | ||
419 | {{0x0f, 0x38, 0xc8, 0x40, 0x12, }, 5, 0, "", "", | ||
420 | "0f 38 c8 40 12 \tsha1nexte 0x12(%rax),%xmm0",}, | ||
421 | {{0x0f, 0x38, 0xc8, 0x45, 0x12, }, 5, 0, "", "", | ||
422 | "0f 38 c8 45 12 \tsha1nexte 0x12(%rbp),%xmm0",}, | ||
423 | {{0x0f, 0x38, 0xc8, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
424 | "0f 38 c8 44 01 12 \tsha1nexte 0x12(%rcx,%rax,1),%xmm0",}, | ||
425 | {{0x0f, 0x38, 0xc8, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
426 | "0f 38 c8 44 05 12 \tsha1nexte 0x12(%rbp,%rax,1),%xmm0",}, | ||
427 | {{0x0f, 0x38, 0xc8, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
428 | "0f 38 c8 44 08 12 \tsha1nexte 0x12(%rax,%rcx,1),%xmm0",}, | ||
429 | {{0x0f, 0x38, 0xc8, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
430 | "0f 38 c8 44 c8 12 \tsha1nexte 0x12(%rax,%rcx,8),%xmm0",}, | ||
431 | {{0x0f, 0x38, 0xc8, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
432 | "0f 38 c8 80 78 56 34 12 \tsha1nexte 0x12345678(%rax),%xmm0",}, | ||
433 | {{0x0f, 0x38, 0xc8, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
434 | "0f 38 c8 85 78 56 34 12 \tsha1nexte 0x12345678(%rbp),%xmm0",}, | ||
435 | {{0x0f, 0x38, 0xc8, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
436 | "0f 38 c8 84 01 78 56 34 12 \tsha1nexte 0x12345678(%rcx,%rax,1),%xmm0",}, | ||
437 | {{0x0f, 0x38, 0xc8, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
438 | "0f 38 c8 84 05 78 56 34 12 \tsha1nexte 0x12345678(%rbp,%rax,1),%xmm0",}, | ||
439 | {{0x0f, 0x38, 0xc8, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
440 | "0f 38 c8 84 08 78 56 34 12 \tsha1nexte 0x12345678(%rax,%rcx,1),%xmm0",}, | ||
441 | {{0x0f, 0x38, 0xc8, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
442 | "0f 38 c8 84 c8 78 56 34 12 \tsha1nexte 0x12345678(%rax,%rcx,8),%xmm0",}, | ||
443 | {{0x44, 0x0f, 0x38, 0xc8, 0xbc, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 10, 0, "", "", | ||
444 | "44 0f 38 c8 bc c8 78 56 34 12 \tsha1nexte 0x12345678(%rax,%rcx,8),%xmm15",}, | ||
445 | {{0x0f, 0x38, 0xc9, 0xc1, }, 4, 0, "", "", | ||
446 | "0f 38 c9 c1 \tsha1msg1 %xmm1,%xmm0",}, | ||
447 | {{0x0f, 0x38, 0xc9, 0xd7, }, 4, 0, "", "", | ||
448 | "0f 38 c9 d7 \tsha1msg1 %xmm7,%xmm2",}, | ||
449 | {{0x41, 0x0f, 0x38, 0xc9, 0xc0, }, 5, 0, "", "", | ||
450 | "41 0f 38 c9 c0 \tsha1msg1 %xmm8,%xmm0",}, | ||
451 | {{0x44, 0x0f, 0x38, 0xc9, 0xc7, }, 5, 0, "", "", | ||
452 | "44 0f 38 c9 c7 \tsha1msg1 %xmm7,%xmm8",}, | ||
453 | {{0x45, 0x0f, 0x38, 0xc9, 0xc7, }, 5, 0, "", "", | ||
454 | "45 0f 38 c9 c7 \tsha1msg1 %xmm15,%xmm8",}, | ||
455 | {{0x0f, 0x38, 0xc9, 0x00, }, 4, 0, "", "", | ||
456 | "0f 38 c9 00 \tsha1msg1 (%rax),%xmm0",}, | ||
457 | {{0x41, 0x0f, 0x38, 0xc9, 0x00, }, 5, 0, "", "", | ||
458 | "41 0f 38 c9 00 \tsha1msg1 (%r8),%xmm0",}, | ||
459 | {{0x0f, 0x38, 0xc9, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
460 | "0f 38 c9 04 25 78 56 34 12 \tsha1msg1 0x12345678,%xmm0",}, | ||
461 | {{0x0f, 0x38, 0xc9, 0x18, }, 4, 0, "", "", | ||
462 | "0f 38 c9 18 \tsha1msg1 (%rax),%xmm3",}, | ||
463 | {{0x0f, 0x38, 0xc9, 0x04, 0x01, }, 5, 0, "", "", | ||
464 | "0f 38 c9 04 01 \tsha1msg1 (%rcx,%rax,1),%xmm0",}, | ||
465 | {{0x0f, 0x38, 0xc9, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
466 | "0f 38 c9 04 05 78 56 34 12 \tsha1msg1 0x12345678(,%rax,1),%xmm0",}, | ||
467 | {{0x0f, 0x38, 0xc9, 0x04, 0x08, }, 5, 0, "", "", | ||
468 | "0f 38 c9 04 08 \tsha1msg1 (%rax,%rcx,1),%xmm0",}, | ||
469 | {{0x0f, 0x38, 0xc9, 0x04, 0xc8, }, 5, 0, "", "", | ||
470 | "0f 38 c9 04 c8 \tsha1msg1 (%rax,%rcx,8),%xmm0",}, | ||
471 | {{0x0f, 0x38, 0xc9, 0x40, 0x12, }, 5, 0, "", "", | ||
472 | "0f 38 c9 40 12 \tsha1msg1 0x12(%rax),%xmm0",}, | ||
473 | {{0x0f, 0x38, 0xc9, 0x45, 0x12, }, 5, 0, "", "", | ||
474 | "0f 38 c9 45 12 \tsha1msg1 0x12(%rbp),%xmm0",}, | ||
475 | {{0x0f, 0x38, 0xc9, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
476 | "0f 38 c9 44 01 12 \tsha1msg1 0x12(%rcx,%rax,1),%xmm0",}, | ||
477 | {{0x0f, 0x38, 0xc9, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
478 | "0f 38 c9 44 05 12 \tsha1msg1 0x12(%rbp,%rax,1),%xmm0",}, | ||
479 | {{0x0f, 0x38, 0xc9, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
480 | "0f 38 c9 44 08 12 \tsha1msg1 0x12(%rax,%rcx,1),%xmm0",}, | ||
481 | {{0x0f, 0x38, 0xc9, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
482 | "0f 38 c9 44 c8 12 \tsha1msg1 0x12(%rax,%rcx,8),%xmm0",}, | ||
483 | {{0x0f, 0x38, 0xc9, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
484 | "0f 38 c9 80 78 56 34 12 \tsha1msg1 0x12345678(%rax),%xmm0",}, | ||
485 | {{0x0f, 0x38, 0xc9, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
486 | "0f 38 c9 85 78 56 34 12 \tsha1msg1 0x12345678(%rbp),%xmm0",}, | ||
487 | {{0x0f, 0x38, 0xc9, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
488 | "0f 38 c9 84 01 78 56 34 12 \tsha1msg1 0x12345678(%rcx,%rax,1),%xmm0",}, | ||
489 | {{0x0f, 0x38, 0xc9, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
490 | "0f 38 c9 84 05 78 56 34 12 \tsha1msg1 0x12345678(%rbp,%rax,1),%xmm0",}, | ||
491 | {{0x0f, 0x38, 0xc9, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
492 | "0f 38 c9 84 08 78 56 34 12 \tsha1msg1 0x12345678(%rax,%rcx,1),%xmm0",}, | ||
493 | {{0x0f, 0x38, 0xc9, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
494 | "0f 38 c9 84 c8 78 56 34 12 \tsha1msg1 0x12345678(%rax,%rcx,8),%xmm0",}, | ||
495 | {{0x44, 0x0f, 0x38, 0xc9, 0xbc, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 10, 0, "", "", | ||
496 | "44 0f 38 c9 bc c8 78 56 34 12 \tsha1msg1 0x12345678(%rax,%rcx,8),%xmm15",}, | ||
497 | {{0x0f, 0x38, 0xca, 0xc1, }, 4, 0, "", "", | ||
498 | "0f 38 ca c1 \tsha1msg2 %xmm1,%xmm0",}, | ||
499 | {{0x0f, 0x38, 0xca, 0xd7, }, 4, 0, "", "", | ||
500 | "0f 38 ca d7 \tsha1msg2 %xmm7,%xmm2",}, | ||
501 | {{0x41, 0x0f, 0x38, 0xca, 0xc0, }, 5, 0, "", "", | ||
502 | "41 0f 38 ca c0 \tsha1msg2 %xmm8,%xmm0",}, | ||
503 | {{0x44, 0x0f, 0x38, 0xca, 0xc7, }, 5, 0, "", "", | ||
504 | "44 0f 38 ca c7 \tsha1msg2 %xmm7,%xmm8",}, | ||
505 | {{0x45, 0x0f, 0x38, 0xca, 0xc7, }, 5, 0, "", "", | ||
506 | "45 0f 38 ca c7 \tsha1msg2 %xmm15,%xmm8",}, | ||
507 | {{0x0f, 0x38, 0xca, 0x00, }, 4, 0, "", "", | ||
508 | "0f 38 ca 00 \tsha1msg2 (%rax),%xmm0",}, | ||
509 | {{0x41, 0x0f, 0x38, 0xca, 0x00, }, 5, 0, "", "", | ||
510 | "41 0f 38 ca 00 \tsha1msg2 (%r8),%xmm0",}, | ||
511 | {{0x0f, 0x38, 0xca, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
512 | "0f 38 ca 04 25 78 56 34 12 \tsha1msg2 0x12345678,%xmm0",}, | ||
513 | {{0x0f, 0x38, 0xca, 0x18, }, 4, 0, "", "", | ||
514 | "0f 38 ca 18 \tsha1msg2 (%rax),%xmm3",}, | ||
515 | {{0x0f, 0x38, 0xca, 0x04, 0x01, }, 5, 0, "", "", | ||
516 | "0f 38 ca 04 01 \tsha1msg2 (%rcx,%rax,1),%xmm0",}, | ||
517 | {{0x0f, 0x38, 0xca, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
518 | "0f 38 ca 04 05 78 56 34 12 \tsha1msg2 0x12345678(,%rax,1),%xmm0",}, | ||
519 | {{0x0f, 0x38, 0xca, 0x04, 0x08, }, 5, 0, "", "", | ||
520 | "0f 38 ca 04 08 \tsha1msg2 (%rax,%rcx,1),%xmm0",}, | ||
521 | {{0x0f, 0x38, 0xca, 0x04, 0xc8, }, 5, 0, "", "", | ||
522 | "0f 38 ca 04 c8 \tsha1msg2 (%rax,%rcx,8),%xmm0",}, | ||
523 | {{0x0f, 0x38, 0xca, 0x40, 0x12, }, 5, 0, "", "", | ||
524 | "0f 38 ca 40 12 \tsha1msg2 0x12(%rax),%xmm0",}, | ||
525 | {{0x0f, 0x38, 0xca, 0x45, 0x12, }, 5, 0, "", "", | ||
526 | "0f 38 ca 45 12 \tsha1msg2 0x12(%rbp),%xmm0",}, | ||
527 | {{0x0f, 0x38, 0xca, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
528 | "0f 38 ca 44 01 12 \tsha1msg2 0x12(%rcx,%rax,1),%xmm0",}, | ||
529 | {{0x0f, 0x38, 0xca, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
530 | "0f 38 ca 44 05 12 \tsha1msg2 0x12(%rbp,%rax,1),%xmm0",}, | ||
531 | {{0x0f, 0x38, 0xca, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
532 | "0f 38 ca 44 08 12 \tsha1msg2 0x12(%rax,%rcx,1),%xmm0",}, | ||
533 | {{0x0f, 0x38, 0xca, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
534 | "0f 38 ca 44 c8 12 \tsha1msg2 0x12(%rax,%rcx,8),%xmm0",}, | ||
535 | {{0x0f, 0x38, 0xca, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
536 | "0f 38 ca 80 78 56 34 12 \tsha1msg2 0x12345678(%rax),%xmm0",}, | ||
537 | {{0x0f, 0x38, 0xca, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
538 | "0f 38 ca 85 78 56 34 12 \tsha1msg2 0x12345678(%rbp),%xmm0",}, | ||
539 | {{0x0f, 0x38, 0xca, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
540 | "0f 38 ca 84 01 78 56 34 12 \tsha1msg2 0x12345678(%rcx,%rax,1),%xmm0",}, | ||
541 | {{0x0f, 0x38, 0xca, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
542 | "0f 38 ca 84 05 78 56 34 12 \tsha1msg2 0x12345678(%rbp,%rax,1),%xmm0",}, | ||
543 | {{0x0f, 0x38, 0xca, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
544 | "0f 38 ca 84 08 78 56 34 12 \tsha1msg2 0x12345678(%rax,%rcx,1),%xmm0",}, | ||
545 | {{0x0f, 0x38, 0xca, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
546 | "0f 38 ca 84 c8 78 56 34 12 \tsha1msg2 0x12345678(%rax,%rcx,8),%xmm0",}, | ||
547 | {{0x44, 0x0f, 0x38, 0xca, 0xbc, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 10, 0, "", "", | ||
548 | "44 0f 38 ca bc c8 78 56 34 12 \tsha1msg2 0x12345678(%rax,%rcx,8),%xmm15",}, | ||
549 | {{0x0f, 0x38, 0xcb, 0xcc, }, 4, 0, "", "", | ||
550 | "0f 38 cb cc \tsha256rnds2 %xmm0,%xmm4,%xmm1",}, | ||
551 | {{0x0f, 0x38, 0xcb, 0xd7, }, 4, 0, "", "", | ||
552 | "0f 38 cb d7 \tsha256rnds2 %xmm0,%xmm7,%xmm2",}, | ||
553 | {{0x41, 0x0f, 0x38, 0xcb, 0xc8, }, 5, 0, "", "", | ||
554 | "41 0f 38 cb c8 \tsha256rnds2 %xmm0,%xmm8,%xmm1",}, | ||
555 | {{0x44, 0x0f, 0x38, 0xcb, 0xc7, }, 5, 0, "", "", | ||
556 | "44 0f 38 cb c7 \tsha256rnds2 %xmm0,%xmm7,%xmm8",}, | ||
557 | {{0x45, 0x0f, 0x38, 0xcb, 0xc7, }, 5, 0, "", "", | ||
558 | "45 0f 38 cb c7 \tsha256rnds2 %xmm0,%xmm15,%xmm8",}, | ||
559 | {{0x0f, 0x38, 0xcb, 0x08, }, 4, 0, "", "", | ||
560 | "0f 38 cb 08 \tsha256rnds2 %xmm0,(%rax),%xmm1",}, | ||
561 | {{0x41, 0x0f, 0x38, 0xcb, 0x08, }, 5, 0, "", "", | ||
562 | "41 0f 38 cb 08 \tsha256rnds2 %xmm0,(%r8),%xmm1",}, | ||
563 | {{0x0f, 0x38, 0xcb, 0x0c, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
564 | "0f 38 cb 0c 25 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678,%xmm1",}, | ||
565 | {{0x0f, 0x38, 0xcb, 0x18, }, 4, 0, "", "", | ||
566 | "0f 38 cb 18 \tsha256rnds2 %xmm0,(%rax),%xmm3",}, | ||
567 | {{0x0f, 0x38, 0xcb, 0x0c, 0x01, }, 5, 0, "", "", | ||
568 | "0f 38 cb 0c 01 \tsha256rnds2 %xmm0,(%rcx,%rax,1),%xmm1",}, | ||
569 | {{0x0f, 0x38, 0xcb, 0x0c, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
570 | "0f 38 cb 0c 05 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(,%rax,1),%xmm1",}, | ||
571 | {{0x0f, 0x38, 0xcb, 0x0c, 0x08, }, 5, 0, "", "", | ||
572 | "0f 38 cb 0c 08 \tsha256rnds2 %xmm0,(%rax,%rcx,1),%xmm1",}, | ||
573 | {{0x0f, 0x38, 0xcb, 0x0c, 0xc8, }, 5, 0, "", "", | ||
574 | "0f 38 cb 0c c8 \tsha256rnds2 %xmm0,(%rax,%rcx,8),%xmm1",}, | ||
575 | {{0x0f, 0x38, 0xcb, 0x48, 0x12, }, 5, 0, "", "", | ||
576 | "0f 38 cb 48 12 \tsha256rnds2 %xmm0,0x12(%rax),%xmm1",}, | ||
577 | {{0x0f, 0x38, 0xcb, 0x4d, 0x12, }, 5, 0, "", "", | ||
578 | "0f 38 cb 4d 12 \tsha256rnds2 %xmm0,0x12(%rbp),%xmm1",}, | ||
579 | {{0x0f, 0x38, 0xcb, 0x4c, 0x01, 0x12, }, 6, 0, "", "", | ||
580 | "0f 38 cb 4c 01 12 \tsha256rnds2 %xmm0,0x12(%rcx,%rax,1),%xmm1",}, | ||
581 | {{0x0f, 0x38, 0xcb, 0x4c, 0x05, 0x12, }, 6, 0, "", "", | ||
582 | "0f 38 cb 4c 05 12 \tsha256rnds2 %xmm0,0x12(%rbp,%rax,1),%xmm1",}, | ||
583 | {{0x0f, 0x38, 0xcb, 0x4c, 0x08, 0x12, }, 6, 0, "", "", | ||
584 | "0f 38 cb 4c 08 12 \tsha256rnds2 %xmm0,0x12(%rax,%rcx,1),%xmm1",}, | ||
585 | {{0x0f, 0x38, 0xcb, 0x4c, 0xc8, 0x12, }, 6, 0, "", "", | ||
586 | "0f 38 cb 4c c8 12 \tsha256rnds2 %xmm0,0x12(%rax,%rcx,8),%xmm1",}, | ||
587 | {{0x0f, 0x38, 0xcb, 0x88, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
588 | "0f 38 cb 88 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%rax),%xmm1",}, | ||
589 | {{0x0f, 0x38, 0xcb, 0x8d, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
590 | "0f 38 cb 8d 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%rbp),%xmm1",}, | ||
591 | {{0x0f, 0x38, 0xcb, 0x8c, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
592 | "0f 38 cb 8c 01 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%rcx,%rax,1),%xmm1",}, | ||
593 | {{0x0f, 0x38, 0xcb, 0x8c, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
594 | "0f 38 cb 8c 05 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%rbp,%rax,1),%xmm1",}, | ||
595 | {{0x0f, 0x38, 0xcb, 0x8c, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
596 | "0f 38 cb 8c 08 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%rax,%rcx,1),%xmm1",}, | ||
597 | {{0x0f, 0x38, 0xcb, 0x8c, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
598 | "0f 38 cb 8c c8 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%rax,%rcx,8),%xmm1",}, | ||
599 | {{0x44, 0x0f, 0x38, 0xcb, 0xbc, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 10, 0, "", "", | ||
600 | "44 0f 38 cb bc c8 78 56 34 12 \tsha256rnds2 %xmm0,0x12345678(%rax,%rcx,8),%xmm15",}, | ||
601 | {{0x0f, 0x38, 0xcc, 0xc1, }, 4, 0, "", "", | ||
602 | "0f 38 cc c1 \tsha256msg1 %xmm1,%xmm0",}, | ||
603 | {{0x0f, 0x38, 0xcc, 0xd7, }, 4, 0, "", "", | ||
604 | "0f 38 cc d7 \tsha256msg1 %xmm7,%xmm2",}, | ||
605 | {{0x41, 0x0f, 0x38, 0xcc, 0xc0, }, 5, 0, "", "", | ||
606 | "41 0f 38 cc c0 \tsha256msg1 %xmm8,%xmm0",}, | ||
607 | {{0x44, 0x0f, 0x38, 0xcc, 0xc7, }, 5, 0, "", "", | ||
608 | "44 0f 38 cc c7 \tsha256msg1 %xmm7,%xmm8",}, | ||
609 | {{0x45, 0x0f, 0x38, 0xcc, 0xc7, }, 5, 0, "", "", | ||
610 | "45 0f 38 cc c7 \tsha256msg1 %xmm15,%xmm8",}, | ||
611 | {{0x0f, 0x38, 0xcc, 0x00, }, 4, 0, "", "", | ||
612 | "0f 38 cc 00 \tsha256msg1 (%rax),%xmm0",}, | ||
613 | {{0x41, 0x0f, 0x38, 0xcc, 0x00, }, 5, 0, "", "", | ||
614 | "41 0f 38 cc 00 \tsha256msg1 (%r8),%xmm0",}, | ||
615 | {{0x0f, 0x38, 0xcc, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
616 | "0f 38 cc 04 25 78 56 34 12 \tsha256msg1 0x12345678,%xmm0",}, | ||
617 | {{0x0f, 0x38, 0xcc, 0x18, }, 4, 0, "", "", | ||
618 | "0f 38 cc 18 \tsha256msg1 (%rax),%xmm3",}, | ||
619 | {{0x0f, 0x38, 0xcc, 0x04, 0x01, }, 5, 0, "", "", | ||
620 | "0f 38 cc 04 01 \tsha256msg1 (%rcx,%rax,1),%xmm0",}, | ||
621 | {{0x0f, 0x38, 0xcc, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
622 | "0f 38 cc 04 05 78 56 34 12 \tsha256msg1 0x12345678(,%rax,1),%xmm0",}, | ||
623 | {{0x0f, 0x38, 0xcc, 0x04, 0x08, }, 5, 0, "", "", | ||
624 | "0f 38 cc 04 08 \tsha256msg1 (%rax,%rcx,1),%xmm0",}, | ||
625 | {{0x0f, 0x38, 0xcc, 0x04, 0xc8, }, 5, 0, "", "", | ||
626 | "0f 38 cc 04 c8 \tsha256msg1 (%rax,%rcx,8),%xmm0",}, | ||
627 | {{0x0f, 0x38, 0xcc, 0x40, 0x12, }, 5, 0, "", "", | ||
628 | "0f 38 cc 40 12 \tsha256msg1 0x12(%rax),%xmm0",}, | ||
629 | {{0x0f, 0x38, 0xcc, 0x45, 0x12, }, 5, 0, "", "", | ||
630 | "0f 38 cc 45 12 \tsha256msg1 0x12(%rbp),%xmm0",}, | ||
631 | {{0x0f, 0x38, 0xcc, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
632 | "0f 38 cc 44 01 12 \tsha256msg1 0x12(%rcx,%rax,1),%xmm0",}, | ||
633 | {{0x0f, 0x38, 0xcc, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
634 | "0f 38 cc 44 05 12 \tsha256msg1 0x12(%rbp,%rax,1),%xmm0",}, | ||
635 | {{0x0f, 0x38, 0xcc, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
636 | "0f 38 cc 44 08 12 \tsha256msg1 0x12(%rax,%rcx,1),%xmm0",}, | ||
637 | {{0x0f, 0x38, 0xcc, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
638 | "0f 38 cc 44 c8 12 \tsha256msg1 0x12(%rax,%rcx,8),%xmm0",}, | ||
639 | {{0x0f, 0x38, 0xcc, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
640 | "0f 38 cc 80 78 56 34 12 \tsha256msg1 0x12345678(%rax),%xmm0",}, | ||
641 | {{0x0f, 0x38, 0xcc, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
642 | "0f 38 cc 85 78 56 34 12 \tsha256msg1 0x12345678(%rbp),%xmm0",}, | ||
643 | {{0x0f, 0x38, 0xcc, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
644 | "0f 38 cc 84 01 78 56 34 12 \tsha256msg1 0x12345678(%rcx,%rax,1),%xmm0",}, | ||
645 | {{0x0f, 0x38, 0xcc, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
646 | "0f 38 cc 84 05 78 56 34 12 \tsha256msg1 0x12345678(%rbp,%rax,1),%xmm0",}, | ||
647 | {{0x0f, 0x38, 0xcc, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
648 | "0f 38 cc 84 08 78 56 34 12 \tsha256msg1 0x12345678(%rax,%rcx,1),%xmm0",}, | ||
649 | {{0x0f, 0x38, 0xcc, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
650 | "0f 38 cc 84 c8 78 56 34 12 \tsha256msg1 0x12345678(%rax,%rcx,8),%xmm0",}, | ||
651 | {{0x44, 0x0f, 0x38, 0xcc, 0xbc, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 10, 0, "", "", | ||
652 | "44 0f 38 cc bc c8 78 56 34 12 \tsha256msg1 0x12345678(%rax,%rcx,8),%xmm15",}, | ||
653 | {{0x0f, 0x38, 0xcd, 0xc1, }, 4, 0, "", "", | ||
654 | "0f 38 cd c1 \tsha256msg2 %xmm1,%xmm0",}, | ||
655 | {{0x0f, 0x38, 0xcd, 0xd7, }, 4, 0, "", "", | ||
656 | "0f 38 cd d7 \tsha256msg2 %xmm7,%xmm2",}, | ||
657 | {{0x41, 0x0f, 0x38, 0xcd, 0xc0, }, 5, 0, "", "", | ||
658 | "41 0f 38 cd c0 \tsha256msg2 %xmm8,%xmm0",}, | ||
659 | {{0x44, 0x0f, 0x38, 0xcd, 0xc7, }, 5, 0, "", "", | ||
660 | "44 0f 38 cd c7 \tsha256msg2 %xmm7,%xmm8",}, | ||
661 | {{0x45, 0x0f, 0x38, 0xcd, 0xc7, }, 5, 0, "", "", | ||
662 | "45 0f 38 cd c7 \tsha256msg2 %xmm15,%xmm8",}, | ||
663 | {{0x0f, 0x38, 0xcd, 0x00, }, 4, 0, "", "", | ||
664 | "0f 38 cd 00 \tsha256msg2 (%rax),%xmm0",}, | ||
665 | {{0x41, 0x0f, 0x38, 0xcd, 0x00, }, 5, 0, "", "", | ||
666 | "41 0f 38 cd 00 \tsha256msg2 (%r8),%xmm0",}, | ||
667 | {{0x0f, 0x38, 0xcd, 0x04, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
668 | "0f 38 cd 04 25 78 56 34 12 \tsha256msg2 0x12345678,%xmm0",}, | ||
669 | {{0x0f, 0x38, 0xcd, 0x18, }, 4, 0, "", "", | ||
670 | "0f 38 cd 18 \tsha256msg2 (%rax),%xmm3",}, | ||
671 | {{0x0f, 0x38, 0xcd, 0x04, 0x01, }, 5, 0, "", "", | ||
672 | "0f 38 cd 04 01 \tsha256msg2 (%rcx,%rax,1),%xmm0",}, | ||
673 | {{0x0f, 0x38, 0xcd, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
674 | "0f 38 cd 04 05 78 56 34 12 \tsha256msg2 0x12345678(,%rax,1),%xmm0",}, | ||
675 | {{0x0f, 0x38, 0xcd, 0x04, 0x08, }, 5, 0, "", "", | ||
676 | "0f 38 cd 04 08 \tsha256msg2 (%rax,%rcx,1),%xmm0",}, | ||
677 | {{0x0f, 0x38, 0xcd, 0x04, 0xc8, }, 5, 0, "", "", | ||
678 | "0f 38 cd 04 c8 \tsha256msg2 (%rax,%rcx,8),%xmm0",}, | ||
679 | {{0x0f, 0x38, 0xcd, 0x40, 0x12, }, 5, 0, "", "", | ||
680 | "0f 38 cd 40 12 \tsha256msg2 0x12(%rax),%xmm0",}, | ||
681 | {{0x0f, 0x38, 0xcd, 0x45, 0x12, }, 5, 0, "", "", | ||
682 | "0f 38 cd 45 12 \tsha256msg2 0x12(%rbp),%xmm0",}, | ||
683 | {{0x0f, 0x38, 0xcd, 0x44, 0x01, 0x12, }, 6, 0, "", "", | ||
684 | "0f 38 cd 44 01 12 \tsha256msg2 0x12(%rcx,%rax,1),%xmm0",}, | ||
685 | {{0x0f, 0x38, 0xcd, 0x44, 0x05, 0x12, }, 6, 0, "", "", | ||
686 | "0f 38 cd 44 05 12 \tsha256msg2 0x12(%rbp,%rax,1),%xmm0",}, | ||
687 | {{0x0f, 0x38, 0xcd, 0x44, 0x08, 0x12, }, 6, 0, "", "", | ||
688 | "0f 38 cd 44 08 12 \tsha256msg2 0x12(%rax,%rcx,1),%xmm0",}, | ||
689 | {{0x0f, 0x38, 0xcd, 0x44, 0xc8, 0x12, }, 6, 0, "", "", | ||
690 | "0f 38 cd 44 c8 12 \tsha256msg2 0x12(%rax,%rcx,8),%xmm0",}, | ||
691 | {{0x0f, 0x38, 0xcd, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
692 | "0f 38 cd 80 78 56 34 12 \tsha256msg2 0x12345678(%rax),%xmm0",}, | ||
693 | {{0x0f, 0x38, 0xcd, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
694 | "0f 38 cd 85 78 56 34 12 \tsha256msg2 0x12345678(%rbp),%xmm0",}, | ||
695 | {{0x0f, 0x38, 0xcd, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
696 | "0f 38 cd 84 01 78 56 34 12 \tsha256msg2 0x12345678(%rcx,%rax,1),%xmm0",}, | ||
697 | {{0x0f, 0x38, 0xcd, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
698 | "0f 38 cd 84 05 78 56 34 12 \tsha256msg2 0x12345678(%rbp,%rax,1),%xmm0",}, | ||
699 | {{0x0f, 0x38, 0xcd, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
700 | "0f 38 cd 84 08 78 56 34 12 \tsha256msg2 0x12345678(%rax,%rcx,1),%xmm0",}, | ||
701 | {{0x0f, 0x38, 0xcd, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
702 | "0f 38 cd 84 c8 78 56 34 12 \tsha256msg2 0x12345678(%rax,%rcx,8),%xmm0",}, | ||
703 | {{0x44, 0x0f, 0x38, 0xcd, 0xbc, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 10, 0, "", "", | ||
704 | "44 0f 38 cd bc c8 78 56 34 12 \tsha256msg2 0x12345678(%rax,%rcx,8),%xmm15",}, | ||
705 | {{0x66, 0x0f, 0xae, 0x38, }, 4, 0, "", "", | ||
706 | "66 0f ae 38 \tclflushopt (%rax)",}, | ||
707 | {{0x66, 0x41, 0x0f, 0xae, 0x38, }, 5, 0, "", "", | ||
708 | "66 41 0f ae 38 \tclflushopt (%r8)",}, | ||
709 | {{0x66, 0x0f, 0xae, 0x3c, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
710 | "66 0f ae 3c 25 78 56 34 12 \tclflushopt 0x12345678",}, | ||
711 | {{0x66, 0x0f, 0xae, 0xbc, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
712 | "66 0f ae bc c8 78 56 34 12 \tclflushopt 0x12345678(%rax,%rcx,8)",}, | ||
713 | {{0x66, 0x41, 0x0f, 0xae, 0xbc, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 10, 0, "", "", | ||
714 | "66 41 0f ae bc c8 78 56 34 12 \tclflushopt 0x12345678(%r8,%rcx,8)",}, | ||
715 | {{0x0f, 0xae, 0x38, }, 3, 0, "", "", | ||
716 | "0f ae 38 \tclflush (%rax)",}, | ||
717 | {{0x41, 0x0f, 0xae, 0x38, }, 4, 0, "", "", | ||
718 | "41 0f ae 38 \tclflush (%r8)",}, | ||
719 | {{0x0f, 0xae, 0xf8, }, 3, 0, "", "", | ||
720 | "0f ae f8 \tsfence ",}, | ||
721 | {{0x66, 0x0f, 0xae, 0x30, }, 4, 0, "", "", | ||
722 | "66 0f ae 30 \tclwb (%rax)",}, | ||
723 | {{0x66, 0x41, 0x0f, 0xae, 0x30, }, 5, 0, "", "", | ||
724 | "66 41 0f ae 30 \tclwb (%r8)",}, | ||
725 | {{0x66, 0x0f, 0xae, 0x34, 0x25, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
726 | "66 0f ae 34 25 78 56 34 12 \tclwb 0x12345678",}, | ||
727 | {{0x66, 0x0f, 0xae, 0xb4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
728 | "66 0f ae b4 c8 78 56 34 12 \tclwb 0x12345678(%rax,%rcx,8)",}, | ||
729 | {{0x66, 0x41, 0x0f, 0xae, 0xb4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 10, 0, "", "", | ||
730 | "66 41 0f ae b4 c8 78 56 34 12 \tclwb 0x12345678(%r8,%rcx,8)",}, | ||
731 | {{0x0f, 0xae, 0x30, }, 3, 0, "", "", | ||
732 | "0f ae 30 \txsaveopt (%rax)",}, | ||
733 | {{0x41, 0x0f, 0xae, 0x30, }, 4, 0, "", "", | ||
734 | "41 0f ae 30 \txsaveopt (%r8)",}, | ||
735 | {{0x0f, 0xae, 0xf0, }, 3, 0, "", "", | ||
736 | "0f ae f0 \tmfence ",}, | ||
737 | {{0x0f, 0xc7, 0x20, }, 3, 0, "", "", | ||
738 | "0f c7 20 \txsavec (%rax)",}, | ||
739 | {{0x41, 0x0f, 0xc7, 0x20, }, 4, 0, "", "", | ||
740 | "41 0f c7 20 \txsavec (%r8)",}, | ||
741 | {{0x0f, 0xc7, 0x24, 0x25, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
742 | "0f c7 24 25 78 56 34 12 \txsavec 0x12345678",}, | ||
743 | {{0x0f, 0xc7, 0xa4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
744 | "0f c7 a4 c8 78 56 34 12 \txsavec 0x12345678(%rax,%rcx,8)",}, | ||
745 | {{0x41, 0x0f, 0xc7, 0xa4, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
746 | "41 0f c7 a4 c8 78 56 34 12 \txsavec 0x12345678(%r8,%rcx,8)",}, | ||
747 | {{0x0f, 0xc7, 0x28, }, 3, 0, "", "", | ||
748 | "0f c7 28 \txsaves (%rax)",}, | ||
749 | {{0x41, 0x0f, 0xc7, 0x28, }, 4, 0, "", "", | ||
750 | "41 0f c7 28 \txsaves (%r8)",}, | ||
751 | {{0x0f, 0xc7, 0x2c, 0x25, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
752 | "0f c7 2c 25 78 56 34 12 \txsaves 0x12345678",}, | ||
753 | {{0x0f, 0xc7, 0xac, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
754 | "0f c7 ac c8 78 56 34 12 \txsaves 0x12345678(%rax,%rcx,8)",}, | ||
755 | {{0x41, 0x0f, 0xc7, 0xac, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
756 | "41 0f c7 ac c8 78 56 34 12 \txsaves 0x12345678(%r8,%rcx,8)",}, | ||
757 | {{0x0f, 0xc7, 0x18, }, 3, 0, "", "", | ||
758 | "0f c7 18 \txrstors (%rax)",}, | ||
759 | {{0x41, 0x0f, 0xc7, 0x18, }, 4, 0, "", "", | ||
760 | "41 0f c7 18 \txrstors (%r8)",}, | ||
761 | {{0x0f, 0xc7, 0x1c, 0x25, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
762 | "0f c7 1c 25 78 56 34 12 \txrstors 0x12345678",}, | ||
763 | {{0x0f, 0xc7, 0x9c, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "", | ||
764 | "0f c7 9c c8 78 56 34 12 \txrstors 0x12345678(%rax,%rcx,8)",}, | ||
765 | {{0x41, 0x0f, 0xc7, 0x9c, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "", | ||
766 | "41 0f c7 9c c8 78 56 34 12 \txrstors 0x12345678(%r8,%rcx,8)",}, | ||
767 | {{0x66, 0x0f, 0xae, 0xf8, }, 4, 0, "", "", | ||
768 | "66 0f ae f8 \tpcommit ",}, | ||
diff --git a/tools/perf/arch/x86/tests/insn-x86-dat-src.c b/tools/perf/arch/x86/tests/insn-x86-dat-src.c new file mode 100644 index 000000000000..41b1b1c62660 --- /dev/null +++ b/tools/perf/arch/x86/tests/insn-x86-dat-src.c | |||
@@ -0,0 +1,877 @@ | |||
1 | /* | ||
2 | * This file contains instructions for testing by the test titled: | ||
3 | * | ||
4 | * "Test x86 instruction decoder - new instructions" | ||
5 | * | ||
6 | * Note that the 'Expecting' comment lines are consumed by the | ||
7 | * gen-insn-x86-dat.awk script and have the format: | ||
8 | * | ||
9 | * Expecting: <op> <branch> <rel> | ||
10 | * | ||
11 | * If this file is changed, remember to run the gen-insn-x86-dat.sh | ||
12 | * script and commit the result. | ||
13 | * | ||
14 | * Refer to insn-x86.c for more details. | ||
15 | */ | ||
16 | |||
17 | int main(void) | ||
18 | { | ||
19 | /* Following line is a marker for the awk script - do not change */ | ||
20 | asm volatile("rdtsc"); /* Start here */ | ||
21 | |||
22 | #ifdef __x86_64__ | ||
23 | |||
24 | /* bndmk m64, bnd */ | ||
25 | |||
26 | asm volatile("bndmk (%rax), %bnd0"); | ||
27 | asm volatile("bndmk (%r8), %bnd0"); | ||
28 | asm volatile("bndmk (0x12345678), %bnd0"); | ||
29 | asm volatile("bndmk (%rax), %bnd3"); | ||
30 | asm volatile("bndmk (%rcx,%rax,1), %bnd0"); | ||
31 | asm volatile("bndmk 0x12345678(,%rax,1), %bnd0"); | ||
32 | asm volatile("bndmk (%rax,%rcx,1), %bnd0"); | ||
33 | asm volatile("bndmk (%rax,%rcx,8), %bnd0"); | ||
34 | asm volatile("bndmk 0x12(%rax), %bnd0"); | ||
35 | asm volatile("bndmk 0x12(%rbp), %bnd0"); | ||
36 | asm volatile("bndmk 0x12(%rcx,%rax,1), %bnd0"); | ||
37 | asm volatile("bndmk 0x12(%rbp,%rax,1), %bnd0"); | ||
38 | asm volatile("bndmk 0x12(%rax,%rcx,1), %bnd0"); | ||
39 | asm volatile("bndmk 0x12(%rax,%rcx,8), %bnd0"); | ||
40 | asm volatile("bndmk 0x12345678(%rax), %bnd0"); | ||
41 | asm volatile("bndmk 0x12345678(%rbp), %bnd0"); | ||
42 | asm volatile("bndmk 0x12345678(%rcx,%rax,1), %bnd0"); | ||
43 | asm volatile("bndmk 0x12345678(%rbp,%rax,1), %bnd0"); | ||
44 | asm volatile("bndmk 0x12345678(%rax,%rcx,1), %bnd0"); | ||
45 | asm volatile("bndmk 0x12345678(%rax,%rcx,8), %bnd0"); | ||
46 | |||
47 | /* bndcl r/m64, bnd */ | ||
48 | |||
49 | asm volatile("bndcl (%rax), %bnd0"); | ||
50 | asm volatile("bndcl (%r8), %bnd0"); | ||
51 | asm volatile("bndcl (0x12345678), %bnd0"); | ||
52 | asm volatile("bndcl (%rax), %bnd3"); | ||
53 | asm volatile("bndcl (%rcx,%rax,1), %bnd0"); | ||
54 | asm volatile("bndcl 0x12345678(,%rax,1), %bnd0"); | ||
55 | asm volatile("bndcl (%rax,%rcx,1), %bnd0"); | ||
56 | asm volatile("bndcl (%rax,%rcx,8), %bnd0"); | ||
57 | asm volatile("bndcl 0x12(%rax), %bnd0"); | ||
58 | asm volatile("bndcl 0x12(%rbp), %bnd0"); | ||
59 | asm volatile("bndcl 0x12(%rcx,%rax,1), %bnd0"); | ||
60 | asm volatile("bndcl 0x12(%rbp,%rax,1), %bnd0"); | ||
61 | asm volatile("bndcl 0x12(%rax,%rcx,1), %bnd0"); | ||
62 | asm volatile("bndcl 0x12(%rax,%rcx,8), %bnd0"); | ||
63 | asm volatile("bndcl 0x12345678(%rax), %bnd0"); | ||
64 | asm volatile("bndcl 0x12345678(%rbp), %bnd0"); | ||
65 | asm volatile("bndcl 0x12345678(%rcx,%rax,1), %bnd0"); | ||
66 | asm volatile("bndcl 0x12345678(%rbp,%rax,1), %bnd0"); | ||
67 | asm volatile("bndcl 0x12345678(%rax,%rcx,1), %bnd0"); | ||
68 | asm volatile("bndcl 0x12345678(%rax,%rcx,8), %bnd0"); | ||
69 | asm volatile("bndcl %rax, %bnd0"); | ||
70 | |||
71 | /* bndcu r/m64, bnd */ | ||
72 | |||
73 | asm volatile("bndcu (%rax), %bnd0"); | ||
74 | asm volatile("bndcu (%r8), %bnd0"); | ||
75 | asm volatile("bndcu (0x12345678), %bnd0"); | ||
76 | asm volatile("bndcu (%rax), %bnd3"); | ||
77 | asm volatile("bndcu (%rcx,%rax,1), %bnd0"); | ||
78 | asm volatile("bndcu 0x12345678(,%rax,1), %bnd0"); | ||
79 | asm volatile("bndcu (%rax,%rcx,1), %bnd0"); | ||
80 | asm volatile("bndcu (%rax,%rcx,8), %bnd0"); | ||
81 | asm volatile("bndcu 0x12(%rax), %bnd0"); | ||
82 | asm volatile("bndcu 0x12(%rbp), %bnd0"); | ||
83 | asm volatile("bndcu 0x12(%rcx,%rax,1), %bnd0"); | ||
84 | asm volatile("bndcu 0x12(%rbp,%rax,1), %bnd0"); | ||
85 | asm volatile("bndcu 0x12(%rax,%rcx,1), %bnd0"); | ||
86 | asm volatile("bndcu 0x12(%rax,%rcx,8), %bnd0"); | ||
87 | asm volatile("bndcu 0x12345678(%rax), %bnd0"); | ||
88 | asm volatile("bndcu 0x12345678(%rbp), %bnd0"); | ||
89 | asm volatile("bndcu 0x12345678(%rcx,%rax,1), %bnd0"); | ||
90 | asm volatile("bndcu 0x12345678(%rbp,%rax,1), %bnd0"); | ||
91 | asm volatile("bndcu 0x12345678(%rax,%rcx,1), %bnd0"); | ||
92 | asm volatile("bndcu 0x12345678(%rax,%rcx,8), %bnd0"); | ||
93 | asm volatile("bndcu %rax, %bnd0"); | ||
94 | |||
95 | /* bndcn r/m64, bnd */ | ||
96 | |||
97 | asm volatile("bndcn (%rax), %bnd0"); | ||
98 | asm volatile("bndcn (%r8), %bnd0"); | ||
99 | asm volatile("bndcn (0x12345678), %bnd0"); | ||
100 | asm volatile("bndcn (%rax), %bnd3"); | ||
101 | asm volatile("bndcn (%rcx,%rax,1), %bnd0"); | ||
102 | asm volatile("bndcn 0x12345678(,%rax,1), %bnd0"); | ||
103 | asm volatile("bndcn (%rax,%rcx,1), %bnd0"); | ||
104 | asm volatile("bndcn (%rax,%rcx,8), %bnd0"); | ||
105 | asm volatile("bndcn 0x12(%rax), %bnd0"); | ||
106 | asm volatile("bndcn 0x12(%rbp), %bnd0"); | ||
107 | asm volatile("bndcn 0x12(%rcx,%rax,1), %bnd0"); | ||
108 | asm volatile("bndcn 0x12(%rbp,%rax,1), %bnd0"); | ||
109 | asm volatile("bndcn 0x12(%rax,%rcx,1), %bnd0"); | ||
110 | asm volatile("bndcn 0x12(%rax,%rcx,8), %bnd0"); | ||
111 | asm volatile("bndcn 0x12345678(%rax), %bnd0"); | ||
112 | asm volatile("bndcn 0x12345678(%rbp), %bnd0"); | ||
113 | asm volatile("bndcn 0x12345678(%rcx,%rax,1), %bnd0"); | ||
114 | asm volatile("bndcn 0x12345678(%rbp,%rax,1), %bnd0"); | ||
115 | asm volatile("bndcn 0x12345678(%rax,%rcx,1), %bnd0"); | ||
116 | asm volatile("bndcn 0x12345678(%rax,%rcx,8), %bnd0"); | ||
117 | asm volatile("bndcn %rax, %bnd0"); | ||
118 | |||
119 | /* bndmov m128, bnd */ | ||
120 | |||
121 | asm volatile("bndmov (%rax), %bnd0"); | ||
122 | asm volatile("bndmov (%r8), %bnd0"); | ||
123 | asm volatile("bndmov (0x12345678), %bnd0"); | ||
124 | asm volatile("bndmov (%rax), %bnd3"); | ||
125 | asm volatile("bndmov (%rcx,%rax,1), %bnd0"); | ||
126 | asm volatile("bndmov 0x12345678(,%rax,1), %bnd0"); | ||
127 | asm volatile("bndmov (%rax,%rcx,1), %bnd0"); | ||
128 | asm volatile("bndmov (%rax,%rcx,8), %bnd0"); | ||
129 | asm volatile("bndmov 0x12(%rax), %bnd0"); | ||
130 | asm volatile("bndmov 0x12(%rbp), %bnd0"); | ||
131 | asm volatile("bndmov 0x12(%rcx,%rax,1), %bnd0"); | ||
132 | asm volatile("bndmov 0x12(%rbp,%rax,1), %bnd0"); | ||
133 | asm volatile("bndmov 0x12(%rax,%rcx,1), %bnd0"); | ||
134 | asm volatile("bndmov 0x12(%rax,%rcx,8), %bnd0"); | ||
135 | asm volatile("bndmov 0x12345678(%rax), %bnd0"); | ||
136 | asm volatile("bndmov 0x12345678(%rbp), %bnd0"); | ||
137 | asm volatile("bndmov 0x12345678(%rcx,%rax,1), %bnd0"); | ||
138 | asm volatile("bndmov 0x12345678(%rbp,%rax,1), %bnd0"); | ||
139 | asm volatile("bndmov 0x12345678(%rax,%rcx,1), %bnd0"); | ||
140 | asm volatile("bndmov 0x12345678(%rax,%rcx,8), %bnd0"); | ||
141 | |||
142 | /* bndmov bnd, m128 */ | ||
143 | |||
144 | asm volatile("bndmov %bnd0, (%rax)"); | ||
145 | asm volatile("bndmov %bnd0, (%r8)"); | ||
146 | asm volatile("bndmov %bnd0, (0x12345678)"); | ||
147 | asm volatile("bndmov %bnd3, (%rax)"); | ||
148 | asm volatile("bndmov %bnd0, (%rcx,%rax,1)"); | ||
149 | asm volatile("bndmov %bnd0, 0x12345678(,%rax,1)"); | ||
150 | asm volatile("bndmov %bnd0, (%rax,%rcx,1)"); | ||
151 | asm volatile("bndmov %bnd0, (%rax,%rcx,8)"); | ||
152 | asm volatile("bndmov %bnd0, 0x12(%rax)"); | ||
153 | asm volatile("bndmov %bnd0, 0x12(%rbp)"); | ||
154 | asm volatile("bndmov %bnd0, 0x12(%rcx,%rax,1)"); | ||
155 | asm volatile("bndmov %bnd0, 0x12(%rbp,%rax,1)"); | ||
156 | asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,1)"); | ||
157 | asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,8)"); | ||
158 | asm volatile("bndmov %bnd0, 0x12345678(%rax)"); | ||
159 | asm volatile("bndmov %bnd0, 0x12345678(%rbp)"); | ||
160 | asm volatile("bndmov %bnd0, 0x12345678(%rcx,%rax,1)"); | ||
161 | asm volatile("bndmov %bnd0, 0x12345678(%rbp,%rax,1)"); | ||
162 | asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,1)"); | ||
163 | asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,8)"); | ||
164 | |||
165 | /* bndmov bnd2, bnd1 */ | ||
166 | |||
167 | asm volatile("bndmov %bnd0, %bnd1"); | ||
168 | asm volatile("bndmov %bnd1, %bnd0"); | ||
169 | |||
170 | /* bndldx mib, bnd */ | ||
171 | |||
172 | asm volatile("bndldx (%rax), %bnd0"); | ||
173 | asm volatile("bndldx (%r8), %bnd0"); | ||
174 | asm volatile("bndldx (0x12345678), %bnd0"); | ||
175 | asm volatile("bndldx (%rax), %bnd3"); | ||
176 | asm volatile("bndldx (%rcx,%rax,1), %bnd0"); | ||
177 | asm volatile("bndldx 0x12345678(,%rax,1), %bnd0"); | ||
178 | asm volatile("bndldx (%rax,%rcx,1), %bnd0"); | ||
179 | asm volatile("bndldx 0x12(%rax), %bnd0"); | ||
180 | asm volatile("bndldx 0x12(%rbp), %bnd0"); | ||
181 | asm volatile("bndldx 0x12(%rcx,%rax,1), %bnd0"); | ||
182 | asm volatile("bndldx 0x12(%rbp,%rax,1), %bnd0"); | ||
183 | asm volatile("bndldx 0x12(%rax,%rcx,1), %bnd0"); | ||
184 | asm volatile("bndldx 0x12345678(%rax), %bnd0"); | ||
185 | asm volatile("bndldx 0x12345678(%rbp), %bnd0"); | ||
186 | asm volatile("bndldx 0x12345678(%rcx,%rax,1), %bnd0"); | ||
187 | asm volatile("bndldx 0x12345678(%rbp,%rax,1), %bnd0"); | ||
188 | asm volatile("bndldx 0x12345678(%rax,%rcx,1), %bnd0"); | ||
189 | |||
190 | /* bndstx bnd, mib */ | ||
191 | |||
192 | asm volatile("bndstx %bnd0, (%rax)"); | ||
193 | asm volatile("bndstx %bnd0, (%r8)"); | ||
194 | asm volatile("bndstx %bnd0, (0x12345678)"); | ||
195 | asm volatile("bndstx %bnd3, (%rax)"); | ||
196 | asm volatile("bndstx %bnd0, (%rcx,%rax,1)"); | ||
197 | asm volatile("bndstx %bnd0, 0x12345678(,%rax,1)"); | ||
198 | asm volatile("bndstx %bnd0, (%rax,%rcx,1)"); | ||
199 | asm volatile("bndstx %bnd0, 0x12(%rax)"); | ||
200 | asm volatile("bndstx %bnd0, 0x12(%rbp)"); | ||
201 | asm volatile("bndstx %bnd0, 0x12(%rcx,%rax,1)"); | ||
202 | asm volatile("bndstx %bnd0, 0x12(%rbp,%rax,1)"); | ||
203 | asm volatile("bndstx %bnd0, 0x12(%rax,%rcx,1)"); | ||
204 | asm volatile("bndstx %bnd0, 0x12345678(%rax)"); | ||
205 | asm volatile("bndstx %bnd0, 0x12345678(%rbp)"); | ||
206 | asm volatile("bndstx %bnd0, 0x12345678(%rcx,%rax,1)"); | ||
207 | asm volatile("bndstx %bnd0, 0x12345678(%rbp,%rax,1)"); | ||
208 | asm volatile("bndstx %bnd0, 0x12345678(%rax,%rcx,1)"); | ||
209 | |||
210 | /* bnd prefix on call, ret, jmp and all jcc */ | ||
211 | |||
212 | asm volatile("bnd call label1"); /* Expecting: call unconditional 0 */ | ||
213 | asm volatile("bnd call *(%eax)"); /* Expecting: call indirect 0 */ | ||
214 | asm volatile("bnd ret"); /* Expecting: ret indirect 0 */ | ||
215 | asm volatile("bnd jmp label1"); /* Expecting: jmp unconditional 0 */ | ||
216 | asm volatile("bnd jmp label1"); /* Expecting: jmp unconditional 0 */ | ||
217 | asm volatile("bnd jmp *(%ecx)"); /* Expecting: jmp indirect 0 */ | ||
218 | asm volatile("bnd jne label1"); /* Expecting: jcc conditional 0 */ | ||
219 | |||
220 | /* sha1rnds4 imm8, xmm2/m128, xmm1 */ | ||
221 | |||
222 | asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0"); | ||
223 | asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2"); | ||
224 | asm volatile("sha1rnds4 $0x91, %xmm8, %xmm0"); | ||
225 | asm volatile("sha1rnds4 $0x91, %xmm7, %xmm8"); | ||
226 | asm volatile("sha1rnds4 $0x91, %xmm15, %xmm8"); | ||
227 | asm volatile("sha1rnds4 $0x91, (%rax), %xmm0"); | ||
228 | asm volatile("sha1rnds4 $0x91, (%r8), %xmm0"); | ||
229 | asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0"); | ||
230 | asm volatile("sha1rnds4 $0x91, (%rax), %xmm3"); | ||
231 | asm volatile("sha1rnds4 $0x91, (%rcx,%rax,1), %xmm0"); | ||
232 | asm volatile("sha1rnds4 $0x91, 0x12345678(,%rax,1), %xmm0"); | ||
233 | asm volatile("sha1rnds4 $0x91, (%rax,%rcx,1), %xmm0"); | ||
234 | asm volatile("sha1rnds4 $0x91, (%rax,%rcx,8), %xmm0"); | ||
235 | asm volatile("sha1rnds4 $0x91, 0x12(%rax), %xmm0"); | ||
236 | asm volatile("sha1rnds4 $0x91, 0x12(%rbp), %xmm0"); | ||
237 | asm volatile("sha1rnds4 $0x91, 0x12(%rcx,%rax,1), %xmm0"); | ||
238 | asm volatile("sha1rnds4 $0x91, 0x12(%rbp,%rax,1), %xmm0"); | ||
239 | asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,1), %xmm0"); | ||
240 | asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,8), %xmm0"); | ||
241 | asm volatile("sha1rnds4 $0x91, 0x12345678(%rax), %xmm0"); | ||
242 | asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp), %xmm0"); | ||
243 | asm volatile("sha1rnds4 $0x91, 0x12345678(%rcx,%rax,1), %xmm0"); | ||
244 | asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp,%rax,1), %xmm0"); | ||
245 | asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,1), %xmm0"); | ||
246 | asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm0"); | ||
247 | asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm15"); | ||
248 | |||
249 | /* sha1nexte xmm2/m128, xmm1 */ | ||
250 | |||
251 | asm volatile("sha1nexte %xmm1, %xmm0"); | ||
252 | asm volatile("sha1nexte %xmm7, %xmm2"); | ||
253 | asm volatile("sha1nexte %xmm8, %xmm0"); | ||
254 | asm volatile("sha1nexte %xmm7, %xmm8"); | ||
255 | asm volatile("sha1nexte %xmm15, %xmm8"); | ||
256 | asm volatile("sha1nexte (%rax), %xmm0"); | ||
257 | asm volatile("sha1nexte (%r8), %xmm0"); | ||
258 | asm volatile("sha1nexte (0x12345678), %xmm0"); | ||
259 | asm volatile("sha1nexte (%rax), %xmm3"); | ||
260 | asm volatile("sha1nexte (%rcx,%rax,1), %xmm0"); | ||
261 | asm volatile("sha1nexte 0x12345678(,%rax,1), %xmm0"); | ||
262 | asm volatile("sha1nexte (%rax,%rcx,1), %xmm0"); | ||
263 | asm volatile("sha1nexte (%rax,%rcx,8), %xmm0"); | ||
264 | asm volatile("sha1nexte 0x12(%rax), %xmm0"); | ||
265 | asm volatile("sha1nexte 0x12(%rbp), %xmm0"); | ||
266 | asm volatile("sha1nexte 0x12(%rcx,%rax,1), %xmm0"); | ||
267 | asm volatile("sha1nexte 0x12(%rbp,%rax,1), %xmm0"); | ||
268 | asm volatile("sha1nexte 0x12(%rax,%rcx,1), %xmm0"); | ||
269 | asm volatile("sha1nexte 0x12(%rax,%rcx,8), %xmm0"); | ||
270 | asm volatile("sha1nexte 0x12345678(%rax), %xmm0"); | ||
271 | asm volatile("sha1nexte 0x12345678(%rbp), %xmm0"); | ||
272 | asm volatile("sha1nexte 0x12345678(%rcx,%rax,1), %xmm0"); | ||
273 | asm volatile("sha1nexte 0x12345678(%rbp,%rax,1), %xmm0"); | ||
274 | asm volatile("sha1nexte 0x12345678(%rax,%rcx,1), %xmm0"); | ||
275 | asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm0"); | ||
276 | asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm15"); | ||
277 | |||
278 | /* sha1msg1 xmm2/m128, xmm1 */ | ||
279 | |||
280 | asm volatile("sha1msg1 %xmm1, %xmm0"); | ||
281 | asm volatile("sha1msg1 %xmm7, %xmm2"); | ||
282 | asm volatile("sha1msg1 %xmm8, %xmm0"); | ||
283 | asm volatile("sha1msg1 %xmm7, %xmm8"); | ||
284 | asm volatile("sha1msg1 %xmm15, %xmm8"); | ||
285 | asm volatile("sha1msg1 (%rax), %xmm0"); | ||
286 | asm volatile("sha1msg1 (%r8), %xmm0"); | ||
287 | asm volatile("sha1msg1 (0x12345678), %xmm0"); | ||
288 | asm volatile("sha1msg1 (%rax), %xmm3"); | ||
289 | asm volatile("sha1msg1 (%rcx,%rax,1), %xmm0"); | ||
290 | asm volatile("sha1msg1 0x12345678(,%rax,1), %xmm0"); | ||
291 | asm volatile("sha1msg1 (%rax,%rcx,1), %xmm0"); | ||
292 | asm volatile("sha1msg1 (%rax,%rcx,8), %xmm0"); | ||
293 | asm volatile("sha1msg1 0x12(%rax), %xmm0"); | ||
294 | asm volatile("sha1msg1 0x12(%rbp), %xmm0"); | ||
295 | asm volatile("sha1msg1 0x12(%rcx,%rax,1), %xmm0"); | ||
296 | asm volatile("sha1msg1 0x12(%rbp,%rax,1), %xmm0"); | ||
297 | asm volatile("sha1msg1 0x12(%rax,%rcx,1), %xmm0"); | ||
298 | asm volatile("sha1msg1 0x12(%rax,%rcx,8), %xmm0"); | ||
299 | asm volatile("sha1msg1 0x12345678(%rax), %xmm0"); | ||
300 | asm volatile("sha1msg1 0x12345678(%rbp), %xmm0"); | ||
301 | asm volatile("sha1msg1 0x12345678(%rcx,%rax,1), %xmm0"); | ||
302 | asm volatile("sha1msg1 0x12345678(%rbp,%rax,1), %xmm0"); | ||
303 | asm volatile("sha1msg1 0x12345678(%rax,%rcx,1), %xmm0"); | ||
304 | asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm0"); | ||
305 | asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm15"); | ||
306 | |||
307 | /* sha1msg2 xmm2/m128, xmm1 */ | ||
308 | |||
309 | asm volatile("sha1msg2 %xmm1, %xmm0"); | ||
310 | asm volatile("sha1msg2 %xmm7, %xmm2"); | ||
311 | asm volatile("sha1msg2 %xmm8, %xmm0"); | ||
312 | asm volatile("sha1msg2 %xmm7, %xmm8"); | ||
313 | asm volatile("sha1msg2 %xmm15, %xmm8"); | ||
314 | asm volatile("sha1msg2 (%rax), %xmm0"); | ||
315 | asm volatile("sha1msg2 (%r8), %xmm0"); | ||
316 | asm volatile("sha1msg2 (0x12345678), %xmm0"); | ||
317 | asm volatile("sha1msg2 (%rax), %xmm3"); | ||
318 | asm volatile("sha1msg2 (%rcx,%rax,1), %xmm0"); | ||
319 | asm volatile("sha1msg2 0x12345678(,%rax,1), %xmm0"); | ||
320 | asm volatile("sha1msg2 (%rax,%rcx,1), %xmm0"); | ||
321 | asm volatile("sha1msg2 (%rax,%rcx,8), %xmm0"); | ||
322 | asm volatile("sha1msg2 0x12(%rax), %xmm0"); | ||
323 | asm volatile("sha1msg2 0x12(%rbp), %xmm0"); | ||
324 | asm volatile("sha1msg2 0x12(%rcx,%rax,1), %xmm0"); | ||
325 | asm volatile("sha1msg2 0x12(%rbp,%rax,1), %xmm0"); | ||
326 | asm volatile("sha1msg2 0x12(%rax,%rcx,1), %xmm0"); | ||
327 | asm volatile("sha1msg2 0x12(%rax,%rcx,8), %xmm0"); | ||
328 | asm volatile("sha1msg2 0x12345678(%rax), %xmm0"); | ||
329 | asm volatile("sha1msg2 0x12345678(%rbp), %xmm0"); | ||
330 | asm volatile("sha1msg2 0x12345678(%rcx,%rax,1), %xmm0"); | ||
331 | asm volatile("sha1msg2 0x12345678(%rbp,%rax,1), %xmm0"); | ||
332 | asm volatile("sha1msg2 0x12345678(%rax,%rcx,1), %xmm0"); | ||
333 | asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm0"); | ||
334 | asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm15"); | ||
335 | |||
336 | /* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */ | ||
337 | /* Note sha256rnds2 has an implicit operand 'xmm0' */ | ||
338 | |||
339 | asm volatile("sha256rnds2 %xmm4, %xmm1"); | ||
340 | asm volatile("sha256rnds2 %xmm7, %xmm2"); | ||
341 | asm volatile("sha256rnds2 %xmm8, %xmm1"); | ||
342 | asm volatile("sha256rnds2 %xmm7, %xmm8"); | ||
343 | asm volatile("sha256rnds2 %xmm15, %xmm8"); | ||
344 | asm volatile("sha256rnds2 (%rax), %xmm1"); | ||
345 | asm volatile("sha256rnds2 (%r8), %xmm1"); | ||
346 | asm volatile("sha256rnds2 (0x12345678), %xmm1"); | ||
347 | asm volatile("sha256rnds2 (%rax), %xmm3"); | ||
348 | asm volatile("sha256rnds2 (%rcx,%rax,1), %xmm1"); | ||
349 | asm volatile("sha256rnds2 0x12345678(,%rax,1), %xmm1"); | ||
350 | asm volatile("sha256rnds2 (%rax,%rcx,1), %xmm1"); | ||
351 | asm volatile("sha256rnds2 (%rax,%rcx,8), %xmm1"); | ||
352 | asm volatile("sha256rnds2 0x12(%rax), %xmm1"); | ||
353 | asm volatile("sha256rnds2 0x12(%rbp), %xmm1"); | ||
354 | asm volatile("sha256rnds2 0x12(%rcx,%rax,1), %xmm1"); | ||
355 | asm volatile("sha256rnds2 0x12(%rbp,%rax,1), %xmm1"); | ||
356 | asm volatile("sha256rnds2 0x12(%rax,%rcx,1), %xmm1"); | ||
357 | asm volatile("sha256rnds2 0x12(%rax,%rcx,8), %xmm1"); | ||
358 | asm volatile("sha256rnds2 0x12345678(%rax), %xmm1"); | ||
359 | asm volatile("sha256rnds2 0x12345678(%rbp), %xmm1"); | ||
360 | asm volatile("sha256rnds2 0x12345678(%rcx,%rax,1), %xmm1"); | ||
361 | asm volatile("sha256rnds2 0x12345678(%rbp,%rax,1), %xmm1"); | ||
362 | asm volatile("sha256rnds2 0x12345678(%rax,%rcx,1), %xmm1"); | ||
363 | asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm1"); | ||
364 | asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm15"); | ||
365 | |||
366 | /* sha256msg1 xmm2/m128, xmm1 */ | ||
367 | |||
368 | asm volatile("sha256msg1 %xmm1, %xmm0"); | ||
369 | asm volatile("sha256msg1 %xmm7, %xmm2"); | ||
370 | asm volatile("sha256msg1 %xmm8, %xmm0"); | ||
371 | asm volatile("sha256msg1 %xmm7, %xmm8"); | ||
372 | asm volatile("sha256msg1 %xmm15, %xmm8"); | ||
373 | asm volatile("sha256msg1 (%rax), %xmm0"); | ||
374 | asm volatile("sha256msg1 (%r8), %xmm0"); | ||
375 | asm volatile("sha256msg1 (0x12345678), %xmm0"); | ||
376 | asm volatile("sha256msg1 (%rax), %xmm3"); | ||
377 | asm volatile("sha256msg1 (%rcx,%rax,1), %xmm0"); | ||
378 | asm volatile("sha256msg1 0x12345678(,%rax,1), %xmm0"); | ||
379 | asm volatile("sha256msg1 (%rax,%rcx,1), %xmm0"); | ||
380 | asm volatile("sha256msg1 (%rax,%rcx,8), %xmm0"); | ||
381 | asm volatile("sha256msg1 0x12(%rax), %xmm0"); | ||
382 | asm volatile("sha256msg1 0x12(%rbp), %xmm0"); | ||
383 | asm volatile("sha256msg1 0x12(%rcx,%rax,1), %xmm0"); | ||
384 | asm volatile("sha256msg1 0x12(%rbp,%rax,1), %xmm0"); | ||
385 | asm volatile("sha256msg1 0x12(%rax,%rcx,1), %xmm0"); | ||
386 | asm volatile("sha256msg1 0x12(%rax,%rcx,8), %xmm0"); | ||
387 | asm volatile("sha256msg1 0x12345678(%rax), %xmm0"); | ||
388 | asm volatile("sha256msg1 0x12345678(%rbp), %xmm0"); | ||
389 | asm volatile("sha256msg1 0x12345678(%rcx,%rax,1), %xmm0"); | ||
390 | asm volatile("sha256msg1 0x12345678(%rbp,%rax,1), %xmm0"); | ||
391 | asm volatile("sha256msg1 0x12345678(%rax,%rcx,1), %xmm0"); | ||
392 | asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm0"); | ||
393 | asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm15"); | ||
394 | |||
395 | /* sha256msg2 xmm2/m128, xmm1 */ | ||
396 | |||
397 | asm volatile("sha256msg2 %xmm1, %xmm0"); | ||
398 | asm volatile("sha256msg2 %xmm7, %xmm2"); | ||
399 | asm volatile("sha256msg2 %xmm8, %xmm0"); | ||
400 | asm volatile("sha256msg2 %xmm7, %xmm8"); | ||
401 | asm volatile("sha256msg2 %xmm15, %xmm8"); | ||
402 | asm volatile("sha256msg2 (%rax), %xmm0"); | ||
403 | asm volatile("sha256msg2 (%r8), %xmm0"); | ||
404 | asm volatile("sha256msg2 (0x12345678), %xmm0"); | ||
405 | asm volatile("sha256msg2 (%rax), %xmm3"); | ||
406 | asm volatile("sha256msg2 (%rcx,%rax,1), %xmm0"); | ||
407 | asm volatile("sha256msg2 0x12345678(,%rax,1), %xmm0"); | ||
408 | asm volatile("sha256msg2 (%rax,%rcx,1), %xmm0"); | ||
409 | asm volatile("sha256msg2 (%rax,%rcx,8), %xmm0"); | ||
410 | asm volatile("sha256msg2 0x12(%rax), %xmm0"); | ||
411 | asm volatile("sha256msg2 0x12(%rbp), %xmm0"); | ||
412 | asm volatile("sha256msg2 0x12(%rcx,%rax,1), %xmm0"); | ||
413 | asm volatile("sha256msg2 0x12(%rbp,%rax,1), %xmm0"); | ||
414 | asm volatile("sha256msg2 0x12(%rax,%rcx,1), %xmm0"); | ||
415 | asm volatile("sha256msg2 0x12(%rax,%rcx,8), %xmm0"); | ||
416 | asm volatile("sha256msg2 0x12345678(%rax), %xmm0"); | ||
417 | asm volatile("sha256msg2 0x12345678(%rbp), %xmm0"); | ||
418 | asm volatile("sha256msg2 0x12345678(%rcx,%rax,1), %xmm0"); | ||
419 | asm volatile("sha256msg2 0x12345678(%rbp,%rax,1), %xmm0"); | ||
420 | asm volatile("sha256msg2 0x12345678(%rax,%rcx,1), %xmm0"); | ||
421 | asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm0"); | ||
422 | asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm15"); | ||
423 | |||
424 | /* clflushopt m8 */ | ||
425 | |||
426 | asm volatile("clflushopt (%rax)"); | ||
427 | asm volatile("clflushopt (%r8)"); | ||
428 | asm volatile("clflushopt (0x12345678)"); | ||
429 | asm volatile("clflushopt 0x12345678(%rax,%rcx,8)"); | ||
430 | asm volatile("clflushopt 0x12345678(%r8,%rcx,8)"); | ||
431 | /* Also check instructions in the same group encoding as clflushopt */ | ||
432 | asm volatile("clflush (%rax)"); | ||
433 | asm volatile("clflush (%r8)"); | ||
434 | asm volatile("sfence"); | ||
435 | |||
436 | /* clwb m8 */ | ||
437 | |||
438 | asm volatile("clwb (%rax)"); | ||
439 | asm volatile("clwb (%r8)"); | ||
440 | asm volatile("clwb (0x12345678)"); | ||
441 | asm volatile("clwb 0x12345678(%rax,%rcx,8)"); | ||
442 | asm volatile("clwb 0x12345678(%r8,%rcx,8)"); | ||
443 | /* Also check instructions in the same group encoding as clwb */ | ||
444 | asm volatile("xsaveopt (%rax)"); | ||
445 | asm volatile("xsaveopt (%r8)"); | ||
446 | asm volatile("mfence"); | ||
447 | |||
448 | /* xsavec mem */ | ||
449 | |||
450 | asm volatile("xsavec (%rax)"); | ||
451 | asm volatile("xsavec (%r8)"); | ||
452 | asm volatile("xsavec (0x12345678)"); | ||
453 | asm volatile("xsavec 0x12345678(%rax,%rcx,8)"); | ||
454 | asm volatile("xsavec 0x12345678(%r8,%rcx,8)"); | ||
455 | |||
456 | /* xsaves mem */ | ||
457 | |||
458 | asm volatile("xsaves (%rax)"); | ||
459 | asm volatile("xsaves (%r8)"); | ||
460 | asm volatile("xsaves (0x12345678)"); | ||
461 | asm volatile("xsaves 0x12345678(%rax,%rcx,8)"); | ||
462 | asm volatile("xsaves 0x12345678(%r8,%rcx,8)"); | ||
463 | |||
464 | /* xrstors mem */ | ||
465 | |||
466 | asm volatile("xrstors (%rax)"); | ||
467 | asm volatile("xrstors (%r8)"); | ||
468 | asm volatile("xrstors (0x12345678)"); | ||
469 | asm volatile("xrstors 0x12345678(%rax,%rcx,8)"); | ||
470 | asm volatile("xrstors 0x12345678(%r8,%rcx,8)"); | ||
471 | |||
472 | #else /* #ifdef __x86_64__ */ | ||
473 | |||
474 | /* bndmk m32, bnd */ | ||
475 | |||
476 | asm volatile("bndmk (%eax), %bnd0"); | ||
477 | asm volatile("bndmk (0x12345678), %bnd0"); | ||
478 | asm volatile("bndmk (%eax), %bnd3"); | ||
479 | asm volatile("bndmk (%ecx,%eax,1), %bnd0"); | ||
480 | asm volatile("bndmk 0x12345678(,%eax,1), %bnd0"); | ||
481 | asm volatile("bndmk (%eax,%ecx,1), %bnd0"); | ||
482 | asm volatile("bndmk (%eax,%ecx,8), %bnd0"); | ||
483 | asm volatile("bndmk 0x12(%eax), %bnd0"); | ||
484 | asm volatile("bndmk 0x12(%ebp), %bnd0"); | ||
485 | asm volatile("bndmk 0x12(%ecx,%eax,1), %bnd0"); | ||
486 | asm volatile("bndmk 0x12(%ebp,%eax,1), %bnd0"); | ||
487 | asm volatile("bndmk 0x12(%eax,%ecx,1), %bnd0"); | ||
488 | asm volatile("bndmk 0x12(%eax,%ecx,8), %bnd0"); | ||
489 | asm volatile("bndmk 0x12345678(%eax), %bnd0"); | ||
490 | asm volatile("bndmk 0x12345678(%ebp), %bnd0"); | ||
491 | asm volatile("bndmk 0x12345678(%ecx,%eax,1), %bnd0"); | ||
492 | asm volatile("bndmk 0x12345678(%ebp,%eax,1), %bnd0"); | ||
493 | asm volatile("bndmk 0x12345678(%eax,%ecx,1), %bnd0"); | ||
494 | asm volatile("bndmk 0x12345678(%eax,%ecx,8), %bnd0"); | ||
495 | |||
496 | /* bndcl r/m32, bnd */ | ||
497 | |||
498 | asm volatile("bndcl (%eax), %bnd0"); | ||
499 | asm volatile("bndcl (0x12345678), %bnd0"); | ||
500 | asm volatile("bndcl (%eax), %bnd3"); | ||
501 | asm volatile("bndcl (%ecx,%eax,1), %bnd0"); | ||
502 | asm volatile("bndcl 0x12345678(,%eax,1), %bnd0"); | ||
503 | asm volatile("bndcl (%eax,%ecx,1), %bnd0"); | ||
504 | asm volatile("bndcl (%eax,%ecx,8), %bnd0"); | ||
505 | asm volatile("bndcl 0x12(%eax), %bnd0"); | ||
506 | asm volatile("bndcl 0x12(%ebp), %bnd0"); | ||
507 | asm volatile("bndcl 0x12(%ecx,%eax,1), %bnd0"); | ||
508 | asm volatile("bndcl 0x12(%ebp,%eax,1), %bnd0"); | ||
509 | asm volatile("bndcl 0x12(%eax,%ecx,1), %bnd0"); | ||
510 | asm volatile("bndcl 0x12(%eax,%ecx,8), %bnd0"); | ||
511 | asm volatile("bndcl 0x12345678(%eax), %bnd0"); | ||
512 | asm volatile("bndcl 0x12345678(%ebp), %bnd0"); | ||
513 | asm volatile("bndcl 0x12345678(%ecx,%eax,1), %bnd0"); | ||
514 | asm volatile("bndcl 0x12345678(%ebp,%eax,1), %bnd0"); | ||
515 | asm volatile("bndcl 0x12345678(%eax,%ecx,1), %bnd0"); | ||
516 | asm volatile("bndcl 0x12345678(%eax,%ecx,8), %bnd0"); | ||
517 | asm volatile("bndcl %eax, %bnd0"); | ||
518 | |||
519 | /* bndcu r/m32, bnd */ | ||
520 | |||
521 | asm volatile("bndcu (%eax), %bnd0"); | ||
522 | asm volatile("bndcu (0x12345678), %bnd0"); | ||
523 | asm volatile("bndcu (%eax), %bnd3"); | ||
524 | asm volatile("bndcu (%ecx,%eax,1), %bnd0"); | ||
525 | asm volatile("bndcu 0x12345678(,%eax,1), %bnd0"); | ||
526 | asm volatile("bndcu (%eax,%ecx,1), %bnd0"); | ||
527 | asm volatile("bndcu (%eax,%ecx,8), %bnd0"); | ||
528 | asm volatile("bndcu 0x12(%eax), %bnd0"); | ||
529 | asm volatile("bndcu 0x12(%ebp), %bnd0"); | ||
530 | asm volatile("bndcu 0x12(%ecx,%eax,1), %bnd0"); | ||
531 | asm volatile("bndcu 0x12(%ebp,%eax,1), %bnd0"); | ||
532 | asm volatile("bndcu 0x12(%eax,%ecx,1), %bnd0"); | ||
533 | asm volatile("bndcu 0x12(%eax,%ecx,8), %bnd0"); | ||
534 | asm volatile("bndcu 0x12345678(%eax), %bnd0"); | ||
535 | asm volatile("bndcu 0x12345678(%ebp), %bnd0"); | ||
536 | asm volatile("bndcu 0x12345678(%ecx,%eax,1), %bnd0"); | ||
537 | asm volatile("bndcu 0x12345678(%ebp,%eax,1), %bnd0"); | ||
538 | asm volatile("bndcu 0x12345678(%eax,%ecx,1), %bnd0"); | ||
539 | asm volatile("bndcu 0x12345678(%eax,%ecx,8), %bnd0"); | ||
540 | asm volatile("bndcu %eax, %bnd0"); | ||
541 | |||
542 | /* bndcn r/m32, bnd */ | ||
543 | |||
544 | asm volatile("bndcn (%eax), %bnd0"); | ||
545 | asm volatile("bndcn (0x12345678), %bnd0"); | ||
546 | asm volatile("bndcn (%eax), %bnd3"); | ||
547 | asm volatile("bndcn (%ecx,%eax,1), %bnd0"); | ||
548 | asm volatile("bndcn 0x12345678(,%eax,1), %bnd0"); | ||
549 | asm volatile("bndcn (%eax,%ecx,1), %bnd0"); | ||
550 | asm volatile("bndcn (%eax,%ecx,8), %bnd0"); | ||
551 | asm volatile("bndcn 0x12(%eax), %bnd0"); | ||
552 | asm volatile("bndcn 0x12(%ebp), %bnd0"); | ||
553 | asm volatile("bndcn 0x12(%ecx,%eax,1), %bnd0"); | ||
554 | asm volatile("bndcn 0x12(%ebp,%eax,1), %bnd0"); | ||
555 | asm volatile("bndcn 0x12(%eax,%ecx,1), %bnd0"); | ||
556 | asm volatile("bndcn 0x12(%eax,%ecx,8), %bnd0"); | ||
557 | asm volatile("bndcn 0x12345678(%eax), %bnd0"); | ||
558 | asm volatile("bndcn 0x12345678(%ebp), %bnd0"); | ||
559 | asm volatile("bndcn 0x12345678(%ecx,%eax,1), %bnd0"); | ||
560 | asm volatile("bndcn 0x12345678(%ebp,%eax,1), %bnd0"); | ||
561 | asm volatile("bndcn 0x12345678(%eax,%ecx,1), %bnd0"); | ||
562 | asm volatile("bndcn 0x12345678(%eax,%ecx,8), %bnd0"); | ||
563 | asm volatile("bndcn %eax, %bnd0"); | ||
564 | |||
565 | /* bndmov m64, bnd */ | ||
566 | |||
567 | asm volatile("bndmov (%eax), %bnd0"); | ||
568 | asm volatile("bndmov (0x12345678), %bnd0"); | ||
569 | asm volatile("bndmov (%eax), %bnd3"); | ||
570 | asm volatile("bndmov (%ecx,%eax,1), %bnd0"); | ||
571 | asm volatile("bndmov 0x12345678(,%eax,1), %bnd0"); | ||
572 | asm volatile("bndmov (%eax,%ecx,1), %bnd0"); | ||
573 | asm volatile("bndmov (%eax,%ecx,8), %bnd0"); | ||
574 | asm volatile("bndmov 0x12(%eax), %bnd0"); | ||
575 | asm volatile("bndmov 0x12(%ebp), %bnd0"); | ||
576 | asm volatile("bndmov 0x12(%ecx,%eax,1), %bnd0"); | ||
577 | asm volatile("bndmov 0x12(%ebp,%eax,1), %bnd0"); | ||
578 | asm volatile("bndmov 0x12(%eax,%ecx,1), %bnd0"); | ||
579 | asm volatile("bndmov 0x12(%eax,%ecx,8), %bnd0"); | ||
580 | asm volatile("bndmov 0x12345678(%eax), %bnd0"); | ||
581 | asm volatile("bndmov 0x12345678(%ebp), %bnd0"); | ||
582 | asm volatile("bndmov 0x12345678(%ecx,%eax,1), %bnd0"); | ||
583 | asm volatile("bndmov 0x12345678(%ebp,%eax,1), %bnd0"); | ||
584 | asm volatile("bndmov 0x12345678(%eax,%ecx,1), %bnd0"); | ||
585 | asm volatile("bndmov 0x12345678(%eax,%ecx,8), %bnd0"); | ||
586 | |||
587 | /* bndmov bnd, m64 */ | ||
588 | |||
589 | asm volatile("bndmov %bnd0, (%eax)"); | ||
590 | asm volatile("bndmov %bnd0, (0x12345678)"); | ||
591 | asm volatile("bndmov %bnd3, (%eax)"); | ||
592 | asm volatile("bndmov %bnd0, (%ecx,%eax,1)"); | ||
593 | asm volatile("bndmov %bnd0, 0x12345678(,%eax,1)"); | ||
594 | asm volatile("bndmov %bnd0, (%eax,%ecx,1)"); | ||
595 | asm volatile("bndmov %bnd0, (%eax,%ecx,8)"); | ||
596 | asm volatile("bndmov %bnd0, 0x12(%eax)"); | ||
597 | asm volatile("bndmov %bnd0, 0x12(%ebp)"); | ||
598 | asm volatile("bndmov %bnd0, 0x12(%ecx,%eax,1)"); | ||
599 | asm volatile("bndmov %bnd0, 0x12(%ebp,%eax,1)"); | ||
600 | asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,1)"); | ||
601 | asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,8)"); | ||
602 | asm volatile("bndmov %bnd0, 0x12345678(%eax)"); | ||
603 | asm volatile("bndmov %bnd0, 0x12345678(%ebp)"); | ||
604 | asm volatile("bndmov %bnd0, 0x12345678(%ecx,%eax,1)"); | ||
605 | asm volatile("bndmov %bnd0, 0x12345678(%ebp,%eax,1)"); | ||
606 | asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,1)"); | ||
607 | asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,8)"); | ||
608 | |||
609 | /* bndmov bnd2, bnd1 */ | ||
610 | |||
611 | asm volatile("bndmov %bnd0, %bnd1"); | ||
612 | asm volatile("bndmov %bnd1, %bnd0"); | ||
613 | |||
614 | /* bndldx mib, bnd */ | ||
615 | |||
616 | asm volatile("bndldx (%eax), %bnd0"); | ||
617 | asm volatile("bndldx (0x12345678), %bnd0"); | ||
618 | asm volatile("bndldx (%eax), %bnd3"); | ||
619 | asm volatile("bndldx (%ecx,%eax,1), %bnd0"); | ||
620 | asm volatile("bndldx 0x12345678(,%eax,1), %bnd0"); | ||
621 | asm volatile("bndldx (%eax,%ecx,1), %bnd0"); | ||
622 | asm volatile("bndldx 0x12(%eax), %bnd0"); | ||
623 | asm volatile("bndldx 0x12(%ebp), %bnd0"); | ||
624 | asm volatile("bndldx 0x12(%ecx,%eax,1), %bnd0"); | ||
625 | asm volatile("bndldx 0x12(%ebp,%eax,1), %bnd0"); | ||
626 | asm volatile("bndldx 0x12(%eax,%ecx,1), %bnd0"); | ||
627 | asm volatile("bndldx 0x12345678(%eax), %bnd0"); | ||
628 | asm volatile("bndldx 0x12345678(%ebp), %bnd0"); | ||
629 | asm volatile("bndldx 0x12345678(%ecx,%eax,1), %bnd0"); | ||
630 | asm volatile("bndldx 0x12345678(%ebp,%eax,1), %bnd0"); | ||
631 | asm volatile("bndldx 0x12345678(%eax,%ecx,1), %bnd0"); | ||
632 | |||
633 | /* bndstx bnd, mib */ | ||
634 | |||
635 | asm volatile("bndstx %bnd0, (%eax)"); | ||
636 | asm volatile("bndstx %bnd0, (0x12345678)"); | ||
637 | asm volatile("bndstx %bnd3, (%eax)"); | ||
638 | asm volatile("bndstx %bnd0, (%ecx,%eax,1)"); | ||
639 | asm volatile("bndstx %bnd0, 0x12345678(,%eax,1)"); | ||
640 | asm volatile("bndstx %bnd0, (%eax,%ecx,1)"); | ||
641 | asm volatile("bndstx %bnd0, 0x12(%eax)"); | ||
642 | asm volatile("bndstx %bnd0, 0x12(%ebp)"); | ||
643 | asm volatile("bndstx %bnd0, 0x12(%ecx,%eax,1)"); | ||
644 | asm volatile("bndstx %bnd0, 0x12(%ebp,%eax,1)"); | ||
645 | asm volatile("bndstx %bnd0, 0x12(%eax,%ecx,1)"); | ||
646 | asm volatile("bndstx %bnd0, 0x12345678(%eax)"); | ||
647 | asm volatile("bndstx %bnd0, 0x12345678(%ebp)"); | ||
648 | asm volatile("bndstx %bnd0, 0x12345678(%ecx,%eax,1)"); | ||
649 | asm volatile("bndstx %bnd0, 0x12345678(%ebp,%eax,1)"); | ||
650 | asm volatile("bndstx %bnd0, 0x12345678(%eax,%ecx,1)"); | ||
651 | |||
652 | /* bnd prefix on call, ret, jmp and all jcc */ | ||
653 | |||
654 | asm volatile("bnd call label1"); /* Expecting: call unconditional 0xfffffffc */ | ||
655 | asm volatile("bnd call *(%eax)"); /* Expecting: call indirect 0 */ | ||
656 | asm volatile("bnd ret"); /* Expecting: ret indirect 0 */ | ||
657 | asm volatile("bnd jmp label1"); /* Expecting: jmp unconditional 0xfffffffc */ | ||
658 | asm volatile("bnd jmp label1"); /* Expecting: jmp unconditional 0xfffffffc */ | ||
659 | asm volatile("bnd jmp *(%ecx)"); /* Expecting: jmp indirect 0 */ | ||
660 | asm volatile("bnd jne label1"); /* Expecting: jcc conditional 0xfffffffc */ | ||
661 | |||
662 | /* sha1rnds4 imm8, xmm2/m128, xmm1 */ | ||
663 | |||
664 | asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0"); | ||
665 | asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2"); | ||
666 | asm volatile("sha1rnds4 $0x91, (%eax), %xmm0"); | ||
667 | asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0"); | ||
668 | asm volatile("sha1rnds4 $0x91, (%eax), %xmm3"); | ||
669 | asm volatile("sha1rnds4 $0x91, (%ecx,%eax,1), %xmm0"); | ||
670 | asm volatile("sha1rnds4 $0x91, 0x12345678(,%eax,1), %xmm0"); | ||
671 | asm volatile("sha1rnds4 $0x91, (%eax,%ecx,1), %xmm0"); | ||
672 | asm volatile("sha1rnds4 $0x91, (%eax,%ecx,8), %xmm0"); | ||
673 | asm volatile("sha1rnds4 $0x91, 0x12(%eax), %xmm0"); | ||
674 | asm volatile("sha1rnds4 $0x91, 0x12(%ebp), %xmm0"); | ||
675 | asm volatile("sha1rnds4 $0x91, 0x12(%ecx,%eax,1), %xmm0"); | ||
676 | asm volatile("sha1rnds4 $0x91, 0x12(%ebp,%eax,1), %xmm0"); | ||
677 | asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,1), %xmm0"); | ||
678 | asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,8), %xmm0"); | ||
679 | asm volatile("sha1rnds4 $0x91, 0x12345678(%eax), %xmm0"); | ||
680 | asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp), %xmm0"); | ||
681 | asm volatile("sha1rnds4 $0x91, 0x12345678(%ecx,%eax,1), %xmm0"); | ||
682 | asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp,%eax,1), %xmm0"); | ||
683 | asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,1), %xmm0"); | ||
684 | asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,8), %xmm0"); | ||
685 | |||
686 | /* sha1nexte xmm2/m128, xmm1 */ | ||
687 | |||
688 | asm volatile("sha1nexte %xmm1, %xmm0"); | ||
689 | asm volatile("sha1nexte %xmm7, %xmm2"); | ||
690 | asm volatile("sha1nexte (%eax), %xmm0"); | ||
691 | asm volatile("sha1nexte (0x12345678), %xmm0"); | ||
692 | asm volatile("sha1nexte (%eax), %xmm3"); | ||
693 | asm volatile("sha1nexte (%ecx,%eax,1), %xmm0"); | ||
694 | asm volatile("sha1nexte 0x12345678(,%eax,1), %xmm0"); | ||
695 | asm volatile("sha1nexte (%eax,%ecx,1), %xmm0"); | ||
696 | asm volatile("sha1nexte (%eax,%ecx,8), %xmm0"); | ||
697 | asm volatile("sha1nexte 0x12(%eax), %xmm0"); | ||
698 | asm volatile("sha1nexte 0x12(%ebp), %xmm0"); | ||
699 | asm volatile("sha1nexte 0x12(%ecx,%eax,1), %xmm0"); | ||
700 | asm volatile("sha1nexte 0x12(%ebp,%eax,1), %xmm0"); | ||
701 | asm volatile("sha1nexte 0x12(%eax,%ecx,1), %xmm0"); | ||
702 | asm volatile("sha1nexte 0x12(%eax,%ecx,8), %xmm0"); | ||
703 | asm volatile("sha1nexte 0x12345678(%eax), %xmm0"); | ||
704 | asm volatile("sha1nexte 0x12345678(%ebp), %xmm0"); | ||
705 | asm volatile("sha1nexte 0x12345678(%ecx,%eax,1), %xmm0"); | ||
706 | asm volatile("sha1nexte 0x12345678(%ebp,%eax,1), %xmm0"); | ||
707 | asm volatile("sha1nexte 0x12345678(%eax,%ecx,1), %xmm0"); | ||
708 | asm volatile("sha1nexte 0x12345678(%eax,%ecx,8), %xmm0"); | ||
709 | |||
710 | /* sha1msg1 xmm2/m128, xmm1 */ | ||
711 | |||
712 | asm volatile("sha1msg1 %xmm1, %xmm0"); | ||
713 | asm volatile("sha1msg1 %xmm7, %xmm2"); | ||
714 | asm volatile("sha1msg1 (%eax), %xmm0"); | ||
715 | asm volatile("sha1msg1 (0x12345678), %xmm0"); | ||
716 | asm volatile("sha1msg1 (%eax), %xmm3"); | ||
717 | asm volatile("sha1msg1 (%ecx,%eax,1), %xmm0"); | ||
718 | asm volatile("sha1msg1 0x12345678(,%eax,1), %xmm0"); | ||
719 | asm volatile("sha1msg1 (%eax,%ecx,1), %xmm0"); | ||
720 | asm volatile("sha1msg1 (%eax,%ecx,8), %xmm0"); | ||
721 | asm volatile("sha1msg1 0x12(%eax), %xmm0"); | ||
722 | asm volatile("sha1msg1 0x12(%ebp), %xmm0"); | ||
723 | asm volatile("sha1msg1 0x12(%ecx,%eax,1), %xmm0"); | ||
724 | asm volatile("sha1msg1 0x12(%ebp,%eax,1), %xmm0"); | ||
725 | asm volatile("sha1msg1 0x12(%eax,%ecx,1), %xmm0"); | ||
726 | asm volatile("sha1msg1 0x12(%eax,%ecx,8), %xmm0"); | ||
727 | asm volatile("sha1msg1 0x12345678(%eax), %xmm0"); | ||
728 | asm volatile("sha1msg1 0x12345678(%ebp), %xmm0"); | ||
729 | asm volatile("sha1msg1 0x12345678(%ecx,%eax,1), %xmm0"); | ||
730 | asm volatile("sha1msg1 0x12345678(%ebp,%eax,1), %xmm0"); | ||
731 | asm volatile("sha1msg1 0x12345678(%eax,%ecx,1), %xmm0"); | ||
732 | asm volatile("sha1msg1 0x12345678(%eax,%ecx,8), %xmm0"); | ||
733 | |||
734 | /* sha1msg2 xmm2/m128, xmm1 */ | ||
735 | |||
736 | asm volatile("sha1msg2 %xmm1, %xmm0"); | ||
737 | asm volatile("sha1msg2 %xmm7, %xmm2"); | ||
738 | asm volatile("sha1msg2 (%eax), %xmm0"); | ||
739 | asm volatile("sha1msg2 (0x12345678), %xmm0"); | ||
740 | asm volatile("sha1msg2 (%eax), %xmm3"); | ||
741 | asm volatile("sha1msg2 (%ecx,%eax,1), %xmm0"); | ||
742 | asm volatile("sha1msg2 0x12345678(,%eax,1), %xmm0"); | ||
743 | asm volatile("sha1msg2 (%eax,%ecx,1), %xmm0"); | ||
744 | asm volatile("sha1msg2 (%eax,%ecx,8), %xmm0"); | ||
745 | asm volatile("sha1msg2 0x12(%eax), %xmm0"); | ||
746 | asm volatile("sha1msg2 0x12(%ebp), %xmm0"); | ||
747 | asm volatile("sha1msg2 0x12(%ecx,%eax,1), %xmm0"); | ||
748 | asm volatile("sha1msg2 0x12(%ebp,%eax,1), %xmm0"); | ||
749 | asm volatile("sha1msg2 0x12(%eax,%ecx,1), %xmm0"); | ||
750 | asm volatile("sha1msg2 0x12(%eax,%ecx,8), %xmm0"); | ||
751 | asm volatile("sha1msg2 0x12345678(%eax), %xmm0"); | ||
752 | asm volatile("sha1msg2 0x12345678(%ebp), %xmm0"); | ||
753 | asm volatile("sha1msg2 0x12345678(%ecx,%eax,1), %xmm0"); | ||
754 | asm volatile("sha1msg2 0x12345678(%ebp,%eax,1), %xmm0"); | ||
755 | asm volatile("sha1msg2 0x12345678(%eax,%ecx,1), %xmm0"); | ||
756 | asm volatile("sha1msg2 0x12345678(%eax,%ecx,8), %xmm0"); | ||
757 | |||
758 | /* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */ | ||
759 | /* Note sha256rnds2 has an implicit operand 'xmm0' */ | ||
760 | |||
761 | asm volatile("sha256rnds2 %xmm4, %xmm1"); | ||
762 | asm volatile("sha256rnds2 %xmm7, %xmm2"); | ||
763 | asm volatile("sha256rnds2 (%eax), %xmm1"); | ||
764 | asm volatile("sha256rnds2 (0x12345678), %xmm1"); | ||
765 | asm volatile("sha256rnds2 (%eax), %xmm3"); | ||
766 | asm volatile("sha256rnds2 (%ecx,%eax,1), %xmm1"); | ||
767 | asm volatile("sha256rnds2 0x12345678(,%eax,1), %xmm1"); | ||
768 | asm volatile("sha256rnds2 (%eax,%ecx,1), %xmm1"); | ||
769 | asm volatile("sha256rnds2 (%eax,%ecx,8), %xmm1"); | ||
770 | asm volatile("sha256rnds2 0x12(%eax), %xmm1"); | ||
771 | asm volatile("sha256rnds2 0x12(%ebp), %xmm1"); | ||
772 | asm volatile("sha256rnds2 0x12(%ecx,%eax,1), %xmm1"); | ||
773 | asm volatile("sha256rnds2 0x12(%ebp,%eax,1), %xmm1"); | ||
774 | asm volatile("sha256rnds2 0x12(%eax,%ecx,1), %xmm1"); | ||
775 | asm volatile("sha256rnds2 0x12(%eax,%ecx,8), %xmm1"); | ||
776 | asm volatile("sha256rnds2 0x12345678(%eax), %xmm1"); | ||
777 | asm volatile("sha256rnds2 0x12345678(%ebp), %xmm1"); | ||
778 | asm volatile("sha256rnds2 0x12345678(%ecx,%eax,1), %xmm1"); | ||
779 | asm volatile("sha256rnds2 0x12345678(%ebp,%eax,1), %xmm1"); | ||
780 | asm volatile("sha256rnds2 0x12345678(%eax,%ecx,1), %xmm1"); | ||
781 | asm volatile("sha256rnds2 0x12345678(%eax,%ecx,8), %xmm1"); | ||
782 | |||
783 | /* sha256msg1 xmm2/m128, xmm1 */ | ||
784 | |||
785 | asm volatile("sha256msg1 %xmm1, %xmm0"); | ||
786 | asm volatile("sha256msg1 %xmm7, %xmm2"); | ||
787 | asm volatile("sha256msg1 (%eax), %xmm0"); | ||
788 | asm volatile("sha256msg1 (0x12345678), %xmm0"); | ||
789 | asm volatile("sha256msg1 (%eax), %xmm3"); | ||
790 | asm volatile("sha256msg1 (%ecx,%eax,1), %xmm0"); | ||
791 | asm volatile("sha256msg1 0x12345678(,%eax,1), %xmm0"); | ||
792 | asm volatile("sha256msg1 (%eax,%ecx,1), %xmm0"); | ||
793 | asm volatile("sha256msg1 (%eax,%ecx,8), %xmm0"); | ||
794 | asm volatile("sha256msg1 0x12(%eax), %xmm0"); | ||
795 | asm volatile("sha256msg1 0x12(%ebp), %xmm0"); | ||
796 | asm volatile("sha256msg1 0x12(%ecx,%eax,1), %xmm0"); | ||
797 | asm volatile("sha256msg1 0x12(%ebp,%eax,1), %xmm0"); | ||
798 | asm volatile("sha256msg1 0x12(%eax,%ecx,1), %xmm0"); | ||
799 | asm volatile("sha256msg1 0x12(%eax,%ecx,8), %xmm0"); | ||
800 | asm volatile("sha256msg1 0x12345678(%eax), %xmm0"); | ||
801 | asm volatile("sha256msg1 0x12345678(%ebp), %xmm0"); | ||
802 | asm volatile("sha256msg1 0x12345678(%ecx,%eax,1), %xmm0"); | ||
803 | asm volatile("sha256msg1 0x12345678(%ebp,%eax,1), %xmm0"); | ||
804 | asm volatile("sha256msg1 0x12345678(%eax,%ecx,1), %xmm0"); | ||
805 | asm volatile("sha256msg1 0x12345678(%eax,%ecx,8), %xmm0"); | ||
806 | |||
807 | /* sha256msg2 xmm2/m128, xmm1 */ | ||
808 | |||
809 | asm volatile("sha256msg2 %xmm1, %xmm0"); | ||
810 | asm volatile("sha256msg2 %xmm7, %xmm2"); | ||
811 | asm volatile("sha256msg2 (%eax), %xmm0"); | ||
812 | asm volatile("sha256msg2 (0x12345678), %xmm0"); | ||
813 | asm volatile("sha256msg2 (%eax), %xmm3"); | ||
814 | asm volatile("sha256msg2 (%ecx,%eax,1), %xmm0"); | ||
815 | asm volatile("sha256msg2 0x12345678(,%eax,1), %xmm0"); | ||
816 | asm volatile("sha256msg2 (%eax,%ecx,1), %xmm0"); | ||
817 | asm volatile("sha256msg2 (%eax,%ecx,8), %xmm0"); | ||
818 | asm volatile("sha256msg2 0x12(%eax), %xmm0"); | ||
819 | asm volatile("sha256msg2 0x12(%ebp), %xmm0"); | ||
820 | asm volatile("sha256msg2 0x12(%ecx,%eax,1), %xmm0"); | ||
821 | asm volatile("sha256msg2 0x12(%ebp,%eax,1), %xmm0"); | ||
822 | asm volatile("sha256msg2 0x12(%eax,%ecx,1), %xmm0"); | ||
823 | asm volatile("sha256msg2 0x12(%eax,%ecx,8), %xmm0"); | ||
824 | asm volatile("sha256msg2 0x12345678(%eax), %xmm0"); | ||
825 | asm volatile("sha256msg2 0x12345678(%ebp), %xmm0"); | ||
826 | asm volatile("sha256msg2 0x12345678(%ecx,%eax,1), %xmm0"); | ||
827 | asm volatile("sha256msg2 0x12345678(%ebp,%eax,1), %xmm0"); | ||
828 | asm volatile("sha256msg2 0x12345678(%eax,%ecx,1), %xmm0"); | ||
829 | asm volatile("sha256msg2 0x12345678(%eax,%ecx,8), %xmm0"); | ||
830 | |||
831 | /* clflushopt m8 */ | ||
832 | |||
833 | asm volatile("clflushopt (%eax)"); | ||
834 | asm volatile("clflushopt (0x12345678)"); | ||
835 | asm volatile("clflushopt 0x12345678(%eax,%ecx,8)"); | ||
836 | /* Also check instructions in the same group encoding as clflushopt */ | ||
837 | asm volatile("clflush (%eax)"); | ||
838 | asm volatile("sfence"); | ||
839 | |||
840 | /* clwb m8 */ | ||
841 | |||
842 | asm volatile("clwb (%eax)"); | ||
843 | asm volatile("clwb (0x12345678)"); | ||
844 | asm volatile("clwb 0x12345678(%eax,%ecx,8)"); | ||
845 | /* Also check instructions in the same group encoding as clwb */ | ||
846 | asm volatile("xsaveopt (%eax)"); | ||
847 | asm volatile("mfence"); | ||
848 | |||
849 | /* xsavec mem */ | ||
850 | |||
851 | asm volatile("xsavec (%eax)"); | ||
852 | asm volatile("xsavec (0x12345678)"); | ||
853 | asm volatile("xsavec 0x12345678(%eax,%ecx,8)"); | ||
854 | |||
855 | /* xsaves mem */ | ||
856 | |||
857 | asm volatile("xsaves (%eax)"); | ||
858 | asm volatile("xsaves (0x12345678)"); | ||
859 | asm volatile("xsaves 0x12345678(%eax,%ecx,8)"); | ||
860 | |||
861 | /* xrstors mem */ | ||
862 | |||
863 | asm volatile("xrstors (%eax)"); | ||
864 | asm volatile("xrstors (0x12345678)"); | ||
865 | asm volatile("xrstors 0x12345678(%eax,%ecx,8)"); | ||
866 | |||
867 | #endif /* #ifndef __x86_64__ */ | ||
868 | |||
869 | /* pcommit */ | ||
870 | |||
871 | asm volatile("pcommit"); | ||
872 | |||
873 | /* Following line is a marker for the awk script - do not change */ | ||
874 | asm volatile("rdtsc"); /* Stop here */ | ||
875 | |||
876 | return 0; | ||
877 | } | ||
diff --git a/tools/perf/arch/x86/tests/insn-x86.c b/tools/perf/arch/x86/tests/insn-x86.c new file mode 100644 index 000000000000..b6115dfd28f0 --- /dev/null +++ b/tools/perf/arch/x86/tests/insn-x86.c | |||
@@ -0,0 +1,185 @@ | |||
1 | #include <linux/types.h> | ||
2 | |||
3 | #include "debug.h" | ||
4 | #include "tests/tests.h" | ||
5 | #include "arch-tests.h" | ||
6 | |||
7 | #include "intel-pt-decoder/insn.h" | ||
8 | #include "intel-pt-decoder/intel-pt-insn-decoder.h" | ||
9 | |||
10 | struct test_data { | ||
11 | u8 data[MAX_INSN_SIZE]; | ||
12 | int expected_length; | ||
13 | int expected_rel; | ||
14 | const char *expected_op_str; | ||
15 | const char *expected_branch_str; | ||
16 | const char *asm_rep; | ||
17 | }; | ||
18 | |||
19 | struct test_data test_data_32[] = { | ||
20 | #include "insn-x86-dat-32.c" | ||
21 | {{0x0f, 0x01, 0xee}, 3, 0, NULL, NULL, "0f 01 ee \trdpkru"}, | ||
22 | {{0x0f, 0x01, 0xef}, 3, 0, NULL, NULL, "0f 01 ef \twrpkru"}, | ||
23 | {{0}, 0, 0, NULL, NULL, NULL}, | ||
24 | }; | ||
25 | |||
26 | struct test_data test_data_64[] = { | ||
27 | #include "insn-x86-dat-64.c" | ||
28 | {{0x0f, 0x01, 0xee}, 3, 0, NULL, NULL, "0f 01 ee \trdpkru"}, | ||
29 | {{0x0f, 0x01, 0xef}, 3, 0, NULL, NULL, "0f 01 ef \twrpkru"}, | ||
30 | {{0}, 0, 0, NULL, NULL, NULL}, | ||
31 | }; | ||
32 | |||
33 | static int get_op(const char *op_str) | ||
34 | { | ||
35 | struct val_data { | ||
36 | const char *name; | ||
37 | int val; | ||
38 | } vals[] = { | ||
39 | {"other", INTEL_PT_OP_OTHER}, | ||
40 | {"call", INTEL_PT_OP_CALL}, | ||
41 | {"ret", INTEL_PT_OP_RET}, | ||
42 | {"jcc", INTEL_PT_OP_JCC}, | ||
43 | {"jmp", INTEL_PT_OP_JMP}, | ||
44 | {"loop", INTEL_PT_OP_LOOP}, | ||
45 | {"iret", INTEL_PT_OP_IRET}, | ||
46 | {"int", INTEL_PT_OP_INT}, | ||
47 | {"syscall", INTEL_PT_OP_SYSCALL}, | ||
48 | {"sysret", INTEL_PT_OP_SYSRET}, | ||
49 | {NULL, 0}, | ||
50 | }; | ||
51 | struct val_data *val; | ||
52 | |||
53 | if (!op_str || !strlen(op_str)) | ||
54 | return 0; | ||
55 | |||
56 | for (val = vals; val->name; val++) { | ||
57 | if (!strcmp(val->name, op_str)) | ||
58 | return val->val; | ||
59 | } | ||
60 | |||
61 | pr_debug("Failed to get op\n"); | ||
62 | |||
63 | return -1; | ||
64 | } | ||
65 | |||
66 | static int get_branch(const char *branch_str) | ||
67 | { | ||
68 | struct val_data { | ||
69 | const char *name; | ||
70 | int val; | ||
71 | } vals[] = { | ||
72 | {"no_branch", INTEL_PT_BR_NO_BRANCH}, | ||
73 | {"indirect", INTEL_PT_BR_INDIRECT}, | ||
74 | {"conditional", INTEL_PT_BR_CONDITIONAL}, | ||
75 | {"unconditional", INTEL_PT_BR_UNCONDITIONAL}, | ||
76 | {NULL, 0}, | ||
77 | }; | ||
78 | struct val_data *val; | ||
79 | |||
80 | if (!branch_str || !strlen(branch_str)) | ||
81 | return 0; | ||
82 | |||
83 | for (val = vals; val->name; val++) { | ||
84 | if (!strcmp(val->name, branch_str)) | ||
85 | return val->val; | ||
86 | } | ||
87 | |||
88 | pr_debug("Failed to get branch\n"); | ||
89 | |||
90 | return -1; | ||
91 | } | ||
92 | |||
93 | static int test_data_item(struct test_data *dat, int x86_64) | ||
94 | { | ||
95 | struct intel_pt_insn intel_pt_insn; | ||
96 | struct insn insn; | ||
97 | int op, branch; | ||
98 | |||
99 | insn_init(&insn, dat->data, MAX_INSN_SIZE, x86_64); | ||
100 | insn_get_length(&insn); | ||
101 | |||
102 | if (!insn_complete(&insn)) { | ||
103 | pr_debug("Failed to decode: %s\n", dat->asm_rep); | ||
104 | return -1; | ||
105 | } | ||
106 | |||
107 | if (insn.length != dat->expected_length) { | ||
108 | pr_debug("Failed to decode length (%d vs expected %d): %s\n", | ||
109 | insn.length, dat->expected_length, dat->asm_rep); | ||
110 | return -1; | ||
111 | } | ||
112 | |||
113 | op = get_op(dat->expected_op_str); | ||
114 | branch = get_branch(dat->expected_branch_str); | ||
115 | |||
116 | if (intel_pt_get_insn(dat->data, MAX_INSN_SIZE, x86_64, &intel_pt_insn)) { | ||
117 | pr_debug("Intel PT failed to decode: %s\n", dat->asm_rep); | ||
118 | return -1; | ||
119 | } | ||
120 | |||
121 | if ((int)intel_pt_insn.op != op) { | ||
122 | pr_debug("Failed to decode 'op' value (%d vs expected %d): %s\n", | ||
123 | intel_pt_insn.op, op, dat->asm_rep); | ||
124 | return -1; | ||
125 | } | ||
126 | |||
127 | if ((int)intel_pt_insn.branch != branch) { | ||
128 | pr_debug("Failed to decode 'branch' value (%d vs expected %d): %s\n", | ||
129 | intel_pt_insn.branch, branch, dat->asm_rep); | ||
130 | return -1; | ||
131 | } | ||
132 | |||
133 | if (intel_pt_insn.rel != dat->expected_rel) { | ||
134 | pr_debug("Failed to decode 'rel' value (%#x vs expected %#x): %s\n", | ||
135 | intel_pt_insn.rel, dat->expected_rel, dat->asm_rep); | ||
136 | return -1; | ||
137 | } | ||
138 | |||
139 | pr_debug("Decoded ok: %s\n", dat->asm_rep); | ||
140 | |||
141 | return 0; | ||
142 | } | ||
143 | |||
144 | static int test_data_set(struct test_data *dat_set, int x86_64) | ||
145 | { | ||
146 | struct test_data *dat; | ||
147 | int ret = 0; | ||
148 | |||
149 | for (dat = dat_set; dat->expected_length; dat++) { | ||
150 | if (test_data_item(dat, x86_64)) | ||
151 | ret = -1; | ||
152 | } | ||
153 | |||
154 | return ret; | ||
155 | } | ||
156 | |||
157 | /** | ||
158 | * test__insn_x86 - test x86 instruction decoder - new instructions. | ||
159 | * | ||
160 | * This function implements a test that decodes a selection of instructions and | ||
161 | * checks the results. The Intel PT function that further categorizes | ||
162 | * instructions (i.e. intel_pt_get_insn()) is also checked. | ||
163 | * | ||
164 | * The instructions are originally in insn-x86-dat-src.c which has been | ||
165 | * processed by scripts gen-insn-x86-dat.sh and gen-insn-x86-dat.awk to produce | ||
166 | * insn-x86-dat-32.c and insn-x86-dat-64.c which are included into this program. | ||
167 | * i.e. to add new instructions to the test, edit insn-x86-dat-src.c, run the | ||
168 | * gen-insn-x86-dat.sh script, make perf, and then run the test. | ||
169 | * | ||
170 | * If the test passes %0 is returned, otherwise %-1 is returned. Use the | ||
171 | * verbose (-v) option to see all the instructions and whether or not they | ||
172 | * decoded successfuly. | ||
173 | */ | ||
174 | int test__insn_x86(void) | ||
175 | { | ||
176 | int ret = 0; | ||
177 | |||
178 | if (test_data_set(test_data_32, 0)) | ||
179 | ret = -1; | ||
180 | |||
181 | if (test_data_set(test_data_64, 1)) | ||
182 | ret = -1; | ||
183 | |||
184 | return ret; | ||
185 | } | ||
diff --git a/tools/perf/arch/x86/tests/perf-time-to-tsc.c b/tools/perf/arch/x86/tests/perf-time-to-tsc.c new file mode 100644 index 000000000000..658cd200af74 --- /dev/null +++ b/tools/perf/arch/x86/tests/perf-time-to-tsc.c | |||
@@ -0,0 +1,164 @@ | |||
1 | #include <stdio.h> | ||
2 | #include <unistd.h> | ||
3 | #include <linux/types.h> | ||
4 | #include <sys/prctl.h> | ||
5 | |||
6 | #include "parse-events.h" | ||
7 | #include "evlist.h" | ||
8 | #include "evsel.h" | ||
9 | #include "thread_map.h" | ||
10 | #include "cpumap.h" | ||
11 | #include "tsc.h" | ||
12 | #include "tests/tests.h" | ||
13 | |||
14 | #include "arch-tests.h" | ||
15 | |||
16 | #define CHECK__(x) { \ | ||
17 | while ((x) < 0) { \ | ||
18 | pr_debug(#x " failed!\n"); \ | ||
19 | goto out_err; \ | ||
20 | } \ | ||
21 | } | ||
22 | |||
23 | #define CHECK_NOT_NULL__(x) { \ | ||
24 | while ((x) == NULL) { \ | ||
25 | pr_debug(#x " failed!\n"); \ | ||
26 | goto out_err; \ | ||
27 | } \ | ||
28 | } | ||
29 | |||
30 | /** | ||
31 | * test__perf_time_to_tsc - test converting perf time to TSC. | ||
32 | * | ||
33 | * This function implements a test that checks that the conversion of perf time | ||
34 | * to and from TSC is consistent with the order of events. If the test passes | ||
35 | * %0 is returned, otherwise %-1 is returned. If TSC conversion is not | ||
36 | * supported then then the test passes but " (not supported)" is printed. | ||
37 | */ | ||
38 | int test__perf_time_to_tsc(void) | ||
39 | { | ||
40 | struct record_opts opts = { | ||
41 | .mmap_pages = UINT_MAX, | ||
42 | .user_freq = UINT_MAX, | ||
43 | .user_interval = ULLONG_MAX, | ||
44 | .freq = 4000, | ||
45 | .target = { | ||
46 | .uses_mmap = true, | ||
47 | }, | ||
48 | .sample_time = true, | ||
49 | }; | ||
50 | struct thread_map *threads = NULL; | ||
51 | struct cpu_map *cpus = NULL; | ||
52 | struct perf_evlist *evlist = NULL; | ||
53 | struct perf_evsel *evsel = NULL; | ||
54 | int err = -1, ret, i; | ||
55 | const char *comm1, *comm2; | ||
56 | struct perf_tsc_conversion tc; | ||
57 | struct perf_event_mmap_page *pc; | ||
58 | union perf_event *event; | ||
59 | u64 test_tsc, comm1_tsc, comm2_tsc; | ||
60 | u64 test_time, comm1_time = 0, comm2_time = 0; | ||
61 | |||
62 | threads = thread_map__new(-1, getpid(), UINT_MAX); | ||
63 | CHECK_NOT_NULL__(threads); | ||
64 | |||
65 | cpus = cpu_map__new(NULL); | ||
66 | CHECK_NOT_NULL__(cpus); | ||
67 | |||
68 | evlist = perf_evlist__new(); | ||
69 | CHECK_NOT_NULL__(evlist); | ||
70 | |||
71 | perf_evlist__set_maps(evlist, cpus, threads); | ||
72 | |||
73 | CHECK__(parse_events(evlist, "cycles:u", NULL)); | ||
74 | |||
75 | perf_evlist__config(evlist, &opts); | ||
76 | |||
77 | evsel = perf_evlist__first(evlist); | ||
78 | |||
79 | evsel->attr.comm = 1; | ||
80 | evsel->attr.disabled = 1; | ||
81 | evsel->attr.enable_on_exec = 0; | ||
82 | |||
83 | CHECK__(perf_evlist__open(evlist)); | ||
84 | |||
85 | CHECK__(perf_evlist__mmap(evlist, UINT_MAX, false)); | ||
86 | |||
87 | pc = evlist->mmap[0].base; | ||
88 | ret = perf_read_tsc_conversion(pc, &tc); | ||
89 | if (ret) { | ||
90 | if (ret == -EOPNOTSUPP) { | ||
91 | fprintf(stderr, " (not supported)"); | ||
92 | return 0; | ||
93 | } | ||
94 | goto out_err; | ||
95 | } | ||
96 | |||
97 | perf_evlist__enable(evlist); | ||
98 | |||
99 | comm1 = "Test COMM 1"; | ||
100 | CHECK__(prctl(PR_SET_NAME, (unsigned long)comm1, 0, 0, 0)); | ||
101 | |||
102 | test_tsc = rdtsc(); | ||
103 | |||
104 | comm2 = "Test COMM 2"; | ||
105 | CHECK__(prctl(PR_SET_NAME, (unsigned long)comm2, 0, 0, 0)); | ||
106 | |||
107 | perf_evlist__disable(evlist); | ||
108 | |||
109 | for (i = 0; i < evlist->nr_mmaps; i++) { | ||
110 | while ((event = perf_evlist__mmap_read(evlist, i)) != NULL) { | ||
111 | struct perf_sample sample; | ||
112 | |||
113 | if (event->header.type != PERF_RECORD_COMM || | ||
114 | (pid_t)event->comm.pid != getpid() || | ||
115 | (pid_t)event->comm.tid != getpid()) | ||
116 | goto next_event; | ||
117 | |||
118 | if (strcmp(event->comm.comm, comm1) == 0) { | ||
119 | CHECK__(perf_evsel__parse_sample(evsel, event, | ||
120 | &sample)); | ||
121 | comm1_time = sample.time; | ||
122 | } | ||
123 | if (strcmp(event->comm.comm, comm2) == 0) { | ||
124 | CHECK__(perf_evsel__parse_sample(evsel, event, | ||
125 | &sample)); | ||
126 | comm2_time = sample.time; | ||
127 | } | ||
128 | next_event: | ||
129 | perf_evlist__mmap_consume(evlist, i); | ||
130 | } | ||
131 | } | ||
132 | |||
133 | if (!comm1_time || !comm2_time) | ||
134 | goto out_err; | ||
135 | |||
136 | test_time = tsc_to_perf_time(test_tsc, &tc); | ||
137 | comm1_tsc = perf_time_to_tsc(comm1_time, &tc); | ||
138 | comm2_tsc = perf_time_to_tsc(comm2_time, &tc); | ||
139 | |||
140 | pr_debug("1st event perf time %"PRIu64" tsc %"PRIu64"\n", | ||
141 | comm1_time, comm1_tsc); | ||
142 | pr_debug("rdtsc time %"PRIu64" tsc %"PRIu64"\n", | ||
143 | test_time, test_tsc); | ||
144 | pr_debug("2nd event perf time %"PRIu64" tsc %"PRIu64"\n", | ||
145 | comm2_time, comm2_tsc); | ||
146 | |||
147 | if (test_time <= comm1_time || | ||
148 | test_time >= comm2_time) | ||
149 | goto out_err; | ||
150 | |||
151 | if (test_tsc <= comm1_tsc || | ||
152 | test_tsc >= comm2_tsc) | ||
153 | goto out_err; | ||
154 | |||
155 | err = 0; | ||
156 | |||
157 | out_err: | ||
158 | if (evlist) { | ||
159 | perf_evlist__disable(evlist); | ||
160 | perf_evlist__delete(evlist); | ||
161 | } | ||
162 | |||
163 | return err; | ||
164 | } | ||
diff --git a/tools/perf/arch/x86/tests/rdpmc.c b/tools/perf/arch/x86/tests/rdpmc.c new file mode 100644 index 000000000000..e7688214c7cf --- /dev/null +++ b/tools/perf/arch/x86/tests/rdpmc.c | |||
@@ -0,0 +1,174 @@ | |||
1 | #include <unistd.h> | ||
2 | #include <stdlib.h> | ||
3 | #include <signal.h> | ||
4 | #include <sys/mman.h> | ||
5 | #include <linux/types.h> | ||
6 | #include "perf.h" | ||
7 | #include "debug.h" | ||
8 | #include "tests/tests.h" | ||
9 | #include "cloexec.h" | ||
10 | #include "arch-tests.h" | ||
11 | |||
12 | static u64 rdpmc(unsigned int counter) | ||
13 | { | ||
14 | unsigned int low, high; | ||
15 | |||
16 | asm volatile("rdpmc" : "=a" (low), "=d" (high) : "c" (counter)); | ||
17 | |||
18 | return low | ((u64)high) << 32; | ||
19 | } | ||
20 | |||
21 | static u64 rdtsc(void) | ||
22 | { | ||
23 | unsigned int low, high; | ||
24 | |||
25 | asm volatile("rdtsc" : "=a" (low), "=d" (high)); | ||
26 | |||
27 | return low | ((u64)high) << 32; | ||
28 | } | ||
29 | |||
30 | static u64 mmap_read_self(void *addr) | ||
31 | { | ||
32 | struct perf_event_mmap_page *pc = addr; | ||
33 | u32 seq, idx, time_mult = 0, time_shift = 0; | ||
34 | u64 count, cyc = 0, time_offset = 0, enabled, running, delta; | ||
35 | |||
36 | do { | ||
37 | seq = pc->lock; | ||
38 | barrier(); | ||
39 | |||
40 | enabled = pc->time_enabled; | ||
41 | running = pc->time_running; | ||
42 | |||
43 | if (enabled != running) { | ||
44 | cyc = rdtsc(); | ||
45 | time_mult = pc->time_mult; | ||
46 | time_shift = pc->time_shift; | ||
47 | time_offset = pc->time_offset; | ||
48 | } | ||
49 | |||
50 | idx = pc->index; | ||
51 | count = pc->offset; | ||
52 | if (idx) | ||
53 | count += rdpmc(idx - 1); | ||
54 | |||
55 | barrier(); | ||
56 | } while (pc->lock != seq); | ||
57 | |||
58 | if (enabled != running) { | ||
59 | u64 quot, rem; | ||
60 | |||
61 | quot = (cyc >> time_shift); | ||
62 | rem = cyc & ((1 << time_shift) - 1); | ||
63 | delta = time_offset + quot * time_mult + | ||
64 | ((rem * time_mult) >> time_shift); | ||
65 | |||
66 | enabled += delta; | ||
67 | if (idx) | ||
68 | running += delta; | ||
69 | |||
70 | quot = count / running; | ||
71 | rem = count % running; | ||
72 | count = quot * enabled + (rem * enabled) / running; | ||
73 | } | ||
74 | |||
75 | return count; | ||
76 | } | ||
77 | |||
78 | /* | ||
79 | * If the RDPMC instruction faults then signal this back to the test parent task: | ||
80 | */ | ||
81 | static void segfault_handler(int sig __maybe_unused, | ||
82 | siginfo_t *info __maybe_unused, | ||
83 | void *uc __maybe_unused) | ||
84 | { | ||
85 | exit(-1); | ||
86 | } | ||
87 | |||
88 | static int __test__rdpmc(void) | ||
89 | { | ||
90 | volatile int tmp = 0; | ||
91 | u64 i, loops = 1000; | ||
92 | int n; | ||
93 | int fd; | ||
94 | void *addr; | ||
95 | struct perf_event_attr attr = { | ||
96 | .type = PERF_TYPE_HARDWARE, | ||
97 | .config = PERF_COUNT_HW_INSTRUCTIONS, | ||
98 | .exclude_kernel = 1, | ||
99 | }; | ||
100 | u64 delta_sum = 0; | ||
101 | struct sigaction sa; | ||
102 | char sbuf[STRERR_BUFSIZE]; | ||
103 | |||
104 | sigfillset(&sa.sa_mask); | ||
105 | sa.sa_sigaction = segfault_handler; | ||
106 | sigaction(SIGSEGV, &sa, NULL); | ||
107 | |||
108 | fd = sys_perf_event_open(&attr, 0, -1, -1, | ||
109 | perf_event_open_cloexec_flag()); | ||
110 | if (fd < 0) { | ||
111 | pr_err("Error: sys_perf_event_open() syscall returned " | ||
112 | "with %d (%s)\n", fd, | ||
113 | strerror_r(errno, sbuf, sizeof(sbuf))); | ||
114 | return -1; | ||
115 | } | ||
116 | |||
117 | addr = mmap(NULL, page_size, PROT_READ, MAP_SHARED, fd, 0); | ||
118 | if (addr == (void *)(-1)) { | ||
119 | pr_err("Error: mmap() syscall returned with (%s)\n", | ||
120 | strerror_r(errno, sbuf, sizeof(sbuf))); | ||
121 | goto out_close; | ||
122 | } | ||
123 | |||
124 | for (n = 0; n < 6; n++) { | ||
125 | u64 stamp, now, delta; | ||
126 | |||
127 | stamp = mmap_read_self(addr); | ||
128 | |||
129 | for (i = 0; i < loops; i++) | ||
130 | tmp++; | ||
131 | |||
132 | now = mmap_read_self(addr); | ||
133 | loops *= 10; | ||
134 | |||
135 | delta = now - stamp; | ||
136 | pr_debug("%14d: %14Lu\n", n, (long long)delta); | ||
137 | |||
138 | delta_sum += delta; | ||
139 | } | ||
140 | |||
141 | munmap(addr, page_size); | ||
142 | pr_debug(" "); | ||
143 | out_close: | ||
144 | close(fd); | ||
145 | |||
146 | if (!delta_sum) | ||
147 | return -1; | ||
148 | |||
149 | return 0; | ||
150 | } | ||
151 | |||
152 | int test__rdpmc(void) | ||
153 | { | ||
154 | int status = 0; | ||
155 | int wret = 0; | ||
156 | int ret; | ||
157 | int pid; | ||
158 | |||
159 | pid = fork(); | ||
160 | if (pid < 0) | ||
161 | return -1; | ||
162 | |||
163 | if (!pid) { | ||
164 | ret = __test__rdpmc(); | ||
165 | |||
166 | exit(ret); | ||
167 | } | ||
168 | |||
169 | wret = waitpid(pid, &status, 0); | ||
170 | if (wret < 0 || status) | ||
171 | return -1; | ||
172 | |||
173 | return 0; | ||
174 | } | ||