Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98e4619f authored by Adrian Hunter's avatar Adrian Hunter Committed by Arnaldo Carvalho de Melo
Browse files

perf tools: Add a test for decoding of new x86 instructions



Add a new test titled:

	Test x86 instruction decoder - new instructions

The purpose of this test is to check the instruction decoder after new
instructions have been added.  Initially, MPX instructions are tested
which are already supported, but the definitions in x86-opcode-map.txt
will be tweaked in a subsequent patch, after which this test can be run
to verify those changes.

The data for the test comes from assembly language instructions in
insn-x86-dat-src.c which is converted into bytes by the scripts
gen-insn-x86-dat.sh and gen-insn-x86-dat.awk, and included into the test
program insn-x86.c as insn-x86-dat-32.c and insn-x86-dat-64.c.

The conversion is not done as part of the perf tools build because the
test data must be under (git) change control in order for the test to be
repeatably-correct.  Also it may require a recent version of binutils.

Commiter notes:

Using it:

  # perf test decoder
  39: Test x86 instruction decoder - new instructions          : Ok
  # perf test -v decoder
  39: Test x86 instruction decoder - new instructions          :
  --- start ---
  test child forked, pid 21970
  Decoded ok: 0f 31                	rdtsc
  Decoded ok: f3 0f 1b 00          	bndmk  (%eax),%bnd0
  Decoded ok: f3 0f 1b 05 78 56 34 12 	bndmk  0x12345678,%bnd0
  Decoded ok: f3 0f 1b 18          	bndmk  (%eax),%bnd3
  <SNIP>
  Decoded ok: f2 e9 00 00 00 00    	bnd jmpq 402 <main+0x402>
  Decoded ok: f2 e9 00 00 00 00    	bnd jmpq 408 <main+0x408>
  Decoded ok: 67 f2 ff 21          	bnd jmpq *(%ecx)
  Decoded ok: f2 0f 85 00 00 00 00 	bnd jne 413 <main+0x413>
  test child finished with 0
  ---- end ----
  Test x86 instruction decoder - new instructions: Ok
  #

Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Acked-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Qiaowei Ren <qiaowei.ren@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1441196131-20632-3-git-send-email-adrian.hunter@intel.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 3a9d7723
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -35,6 +35,9 @@ perf-y += thread-map.o
perf-y += llvm.o

perf-$(CONFIG_X86) += perf-time-to-tsc.o
ifdef CONFIG_AUXTRACE
perf-$(CONFIG_X86) += insn-x86.o
endif

ifeq ($(ARCH),$(filter $(ARCH),x86 arm arm64))
perf-$(CONFIG_DWARF_UNWIND) += dwarf-unwind.o
+8 −0
Original line number Diff line number Diff line
@@ -178,6 +178,14 @@ static struct test {
		.desc = "Test LLVM searching and compiling",
		.func = test__llvm,
	},
#ifdef HAVE_AUXTRACE_SUPPORT
#if defined(__x86_64__) || defined(__i386__)
	{
		.desc = "Test x86 instruction decoder - new instructions",
		.func = test__insn_x86,
	},
#endif
#endif
	{
		.func = NULL,
	},
+75 −0
Original line number Diff line number Diff line
#!/bin/awk -f
# gen-insn-x86-dat.awk: script to convert data for the insn-x86 test
# Copyright (c) 2015, Intel Corporation.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms and conditions of the GNU General Public License,
# version 2, as published by the Free Software Foundation.
#
# This program is distributed in the hope it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
# more details.

BEGIN {
	print "/*"
	print " * Generated by gen-insn-x86-dat.sh and gen-insn-x86-dat.awk"
	print " * from insn-x86-dat-src.c for inclusion by insn-x86.c"
	print " * Do not change this code."
	print "*/\n"
	op = ""
	branch = ""
	rel = 0
	going = 0
}

/ Start here / {
	going = 1
}

/ Stop here / {
	going = 0
}

/^\s*[0-9a-fA-F]+\:/ {
	if (going) {
		colon_pos = index($0, ":")
		useful_line = substr($0, colon_pos + 1)
		first_pos = match(useful_line, "[0-9a-fA-F]")
		useful_line = substr(useful_line, first_pos)
		gsub("\t", "\\t", useful_line)
		printf "{{"
		len = 0
		for (i = 2; i <= NF; i++) {
			if (match($i, "^[0-9a-fA-F][0-9a-fA-F]$")) {
				printf "0x%s, ", $i
				len += 1
			} else {
				break
			}
		}
		printf "}, %d, %s, \"%s\", \"%s\",", len, rel, op, branch
		printf "\n\"%s\",},\n", useful_line
		op = ""
		branch = ""
		rel = 0
	}
}

/ Expecting: / {
	expecting_str = " Expecting: "
	expecting_len = length(expecting_str)
	expecting_pos = index($0, expecting_str)
	useful_line = substr($0, expecting_pos + expecting_len)
	for (i = 1; i <= NF; i++) {
		if ($i == "Expecting:") {
			i++
			op = $i
			i++
			branch = $i
			i++
			rel = $i
			break
		}
	}
}
+43 −0
Original line number Diff line number Diff line
#!/bin/sh
# gen-insn-x86-dat: generate data for the insn-x86 test
# Copyright (c) 2015, Intel Corporation.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms and conditions of the GNU General Public License,
# version 2, as published by the Free Software Foundation.
#
# This program is distributed in the hope it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
# more details.

set -e

if [ "$(uname -m)" != "x86_64" ]; then
	echo "ERROR: This script only works on x86_64"
	exit 1
fi

cd $(dirname $0)

trap 'echo "Might need a more recent version of binutils"' EXIT

echo "Compiling insn-x86-dat-src.c to 64-bit object"

gcc -g -c insn-x86-dat-src.c

objdump -dSw insn-x86-dat-src.o | awk -f gen-insn-x86-dat.awk > insn-x86-dat-64.c

rm -f insn-x86-dat-src.o

echo "Compiling insn-x86-dat-src.c to 32-bit object"

gcc -g -c -m32 insn-x86-dat-src.c

objdump -dSw insn-x86-dat-src.o | awk -f gen-insn-x86-dat.awk > insn-x86-dat-32.c

rm -f insn-x86-dat-src.o

trap - EXIT

echo "Done (use git diff to see the changes)"
+324 −0
Original line number Diff line number Diff line
/*
 * Generated by gen-insn-x86-dat.sh and gen-insn-x86-dat.awk
 * from insn-x86-dat-src.c for inclusion by insn-x86.c
 * Do not change this code.
*/

{{0x0f, 0x31, }, 2, 0, "", "",
"0f 31                \trdtsc  ",},
{{0xf3, 0x0f, 0x1b, 0x00, }, 4, 0, "", "",
"f3 0f 1b 00          \tbndmk  (%eax),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f3 0f 1b 05 78 56 34 12 \tbndmk  0x12345678,%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x18, }, 4, 0, "", "",
"f3 0f 1b 18          \tbndmk  (%eax),%bnd3",},
{{0xf3, 0x0f, 0x1b, 0x04, 0x01, }, 5, 0, "", "",
"f3 0f 1b 04 01       \tbndmk  (%ecx,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f3 0f 1b 04 05 78 56 34 12 \tbndmk  0x12345678(,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x04, 0x08, }, 5, 0, "", "",
"f3 0f 1b 04 08       \tbndmk  (%eax,%ecx,1),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x04, 0xc8, }, 5, 0, "", "",
"f3 0f 1b 04 c8       \tbndmk  (%eax,%ecx,8),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x40, 0x12, }, 5, 0, "", "",
"f3 0f 1b 40 12       \tbndmk  0x12(%eax),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x45, 0x12, }, 5, 0, "", "",
"f3 0f 1b 45 12       \tbndmk  0x12(%ebp),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x44, 0x01, 0x12, }, 6, 0, "", "",
"f3 0f 1b 44 01 12    \tbndmk  0x12(%ecx,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x44, 0x05, 0x12, }, 6, 0, "", "",
"f3 0f 1b 44 05 12    \tbndmk  0x12(%ebp,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x44, 0x08, 0x12, }, 6, 0, "", "",
"f3 0f 1b 44 08 12    \tbndmk  0x12(%eax,%ecx,1),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x44, 0xc8, 0x12, }, 6, 0, "", "",
"f3 0f 1b 44 c8 12    \tbndmk  0x12(%eax,%ecx,8),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f3 0f 1b 80 78 56 34 12 \tbndmk  0x12345678(%eax),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f3 0f 1b 85 78 56 34 12 \tbndmk  0x12345678(%ebp),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f3 0f 1b 84 01 78 56 34 12 \tbndmk  0x12345678(%ecx,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f3 0f 1b 84 05 78 56 34 12 \tbndmk  0x12345678(%ebp,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f3 0f 1b 84 08 78 56 34 12 \tbndmk  0x12345678(%eax,%ecx,1),%bnd0",},
{{0xf3, 0x0f, 0x1b, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f3 0f 1b 84 c8 78 56 34 12 \tbndmk  0x12345678(%eax,%ecx,8),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x00, }, 4, 0, "", "",
"f3 0f 1a 00          \tbndcl  (%eax),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f3 0f 1a 05 78 56 34 12 \tbndcl  0x12345678,%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x18, }, 4, 0, "", "",
"f3 0f 1a 18          \tbndcl  (%eax),%bnd3",},
{{0xf3, 0x0f, 0x1a, 0x04, 0x01, }, 5, 0, "", "",
"f3 0f 1a 04 01       \tbndcl  (%ecx,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f3 0f 1a 04 05 78 56 34 12 \tbndcl  0x12345678(,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x04, 0x08, }, 5, 0, "", "",
"f3 0f 1a 04 08       \tbndcl  (%eax,%ecx,1),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x04, 0xc8, }, 5, 0, "", "",
"f3 0f 1a 04 c8       \tbndcl  (%eax,%ecx,8),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x40, 0x12, }, 5, 0, "", "",
"f3 0f 1a 40 12       \tbndcl  0x12(%eax),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x45, 0x12, }, 5, 0, "", "",
"f3 0f 1a 45 12       \tbndcl  0x12(%ebp),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x44, 0x01, 0x12, }, 6, 0, "", "",
"f3 0f 1a 44 01 12    \tbndcl  0x12(%ecx,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x44, 0x05, 0x12, }, 6, 0, "", "",
"f3 0f 1a 44 05 12    \tbndcl  0x12(%ebp,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x44, 0x08, 0x12, }, 6, 0, "", "",
"f3 0f 1a 44 08 12    \tbndcl  0x12(%eax,%ecx,1),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x44, 0xc8, 0x12, }, 6, 0, "", "",
"f3 0f 1a 44 c8 12    \tbndcl  0x12(%eax,%ecx,8),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f3 0f 1a 80 78 56 34 12 \tbndcl  0x12345678(%eax),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f3 0f 1a 85 78 56 34 12 \tbndcl  0x12345678(%ebp),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f3 0f 1a 84 01 78 56 34 12 \tbndcl  0x12345678(%ecx,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f3 0f 1a 84 05 78 56 34 12 \tbndcl  0x12345678(%ebp,%eax,1),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f3 0f 1a 84 08 78 56 34 12 \tbndcl  0x12345678(%eax,%ecx,1),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f3 0f 1a 84 c8 78 56 34 12 \tbndcl  0x12345678(%eax,%ecx,8),%bnd0",},
{{0xf3, 0x0f, 0x1a, 0xc0, }, 4, 0, "", "",
"f3 0f 1a c0          \tbndcl  %eax,%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x00, }, 4, 0, "", "",
"f2 0f 1a 00          \tbndcu  (%eax),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f2 0f 1a 05 78 56 34 12 \tbndcu  0x12345678,%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x18, }, 4, 0, "", "",
"f2 0f 1a 18          \tbndcu  (%eax),%bnd3",},
{{0xf2, 0x0f, 0x1a, 0x04, 0x01, }, 5, 0, "", "",
"f2 0f 1a 04 01       \tbndcu  (%ecx,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f2 0f 1a 04 05 78 56 34 12 \tbndcu  0x12345678(,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x04, 0x08, }, 5, 0, "", "",
"f2 0f 1a 04 08       \tbndcu  (%eax,%ecx,1),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x04, 0xc8, }, 5, 0, "", "",
"f2 0f 1a 04 c8       \tbndcu  (%eax,%ecx,8),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x40, 0x12, }, 5, 0, "", "",
"f2 0f 1a 40 12       \tbndcu  0x12(%eax),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x45, 0x12, }, 5, 0, "", "",
"f2 0f 1a 45 12       \tbndcu  0x12(%ebp),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x44, 0x01, 0x12, }, 6, 0, "", "",
"f2 0f 1a 44 01 12    \tbndcu  0x12(%ecx,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x44, 0x05, 0x12, }, 6, 0, "", "",
"f2 0f 1a 44 05 12    \tbndcu  0x12(%ebp,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x44, 0x08, 0x12, }, 6, 0, "", "",
"f2 0f 1a 44 08 12    \tbndcu  0x12(%eax,%ecx,1),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x44, 0xc8, 0x12, }, 6, 0, "", "",
"f2 0f 1a 44 c8 12    \tbndcu  0x12(%eax,%ecx,8),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f2 0f 1a 80 78 56 34 12 \tbndcu  0x12345678(%eax),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f2 0f 1a 85 78 56 34 12 \tbndcu  0x12345678(%ebp),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f2 0f 1a 84 01 78 56 34 12 \tbndcu  0x12345678(%ecx,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f2 0f 1a 84 05 78 56 34 12 \tbndcu  0x12345678(%ebp,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f2 0f 1a 84 08 78 56 34 12 \tbndcu  0x12345678(%eax,%ecx,1),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f2 0f 1a 84 c8 78 56 34 12 \tbndcu  0x12345678(%eax,%ecx,8),%bnd0",},
{{0xf2, 0x0f, 0x1a, 0xc0, }, 4, 0, "", "",
"f2 0f 1a c0          \tbndcu  %eax,%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x00, }, 4, 0, "", "",
"f2 0f 1b 00          \tbndcn  (%eax),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f2 0f 1b 05 78 56 34 12 \tbndcn  0x12345678,%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x18, }, 4, 0, "", "",
"f2 0f 1b 18          \tbndcn  (%eax),%bnd3",},
{{0xf2, 0x0f, 0x1b, 0x04, 0x01, }, 5, 0, "", "",
"f2 0f 1b 04 01       \tbndcn  (%ecx,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f2 0f 1b 04 05 78 56 34 12 \tbndcn  0x12345678(,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x04, 0x08, }, 5, 0, "", "",
"f2 0f 1b 04 08       \tbndcn  (%eax,%ecx,1),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x04, 0xc8, }, 5, 0, "", "",
"f2 0f 1b 04 c8       \tbndcn  (%eax,%ecx,8),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x40, 0x12, }, 5, 0, "", "",
"f2 0f 1b 40 12       \tbndcn  0x12(%eax),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x45, 0x12, }, 5, 0, "", "",
"f2 0f 1b 45 12       \tbndcn  0x12(%ebp),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x44, 0x01, 0x12, }, 6, 0, "", "",
"f2 0f 1b 44 01 12    \tbndcn  0x12(%ecx,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x44, 0x05, 0x12, }, 6, 0, "", "",
"f2 0f 1b 44 05 12    \tbndcn  0x12(%ebp,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x44, 0x08, 0x12, }, 6, 0, "", "",
"f2 0f 1b 44 08 12    \tbndcn  0x12(%eax,%ecx,1),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x44, 0xc8, 0x12, }, 6, 0, "", "",
"f2 0f 1b 44 c8 12    \tbndcn  0x12(%eax,%ecx,8),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f2 0f 1b 80 78 56 34 12 \tbndcn  0x12345678(%eax),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"f2 0f 1b 85 78 56 34 12 \tbndcn  0x12345678(%ebp),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f2 0f 1b 84 01 78 56 34 12 \tbndcn  0x12345678(%ecx,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f2 0f 1b 84 05 78 56 34 12 \tbndcn  0x12345678(%ebp,%eax,1),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f2 0f 1b 84 08 78 56 34 12 \tbndcn  0x12345678(%eax,%ecx,1),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"f2 0f 1b 84 c8 78 56 34 12 \tbndcn  0x12345678(%eax,%ecx,8),%bnd0",},
{{0xf2, 0x0f, 0x1b, 0xc0, }, 4, 0, "", "",
"f2 0f 1b c0          \tbndcn  %eax,%bnd0",},
{{0x66, 0x0f, 0x1a, 0x00, }, 4, 0, "", "",
"66 0f 1a 00          \tbndmov (%eax),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"66 0f 1a 05 78 56 34 12 \tbndmov 0x12345678,%bnd0",},
{{0x66, 0x0f, 0x1a, 0x18, }, 4, 0, "", "",
"66 0f 1a 18          \tbndmov (%eax),%bnd3",},
{{0x66, 0x0f, 0x1a, 0x04, 0x01, }, 5, 0, "", "",
"66 0f 1a 04 01       \tbndmov (%ecx,%eax,1),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"66 0f 1a 04 05 78 56 34 12 \tbndmov 0x12345678(,%eax,1),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x04, 0x08, }, 5, 0, "", "",
"66 0f 1a 04 08       \tbndmov (%eax,%ecx,1),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x04, 0xc8, }, 5, 0, "", "",
"66 0f 1a 04 c8       \tbndmov (%eax,%ecx,8),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x40, 0x12, }, 5, 0, "", "",
"66 0f 1a 40 12       \tbndmov 0x12(%eax),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x45, 0x12, }, 5, 0, "", "",
"66 0f 1a 45 12       \tbndmov 0x12(%ebp),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x44, 0x01, 0x12, }, 6, 0, "", "",
"66 0f 1a 44 01 12    \tbndmov 0x12(%ecx,%eax,1),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x44, 0x05, 0x12, }, 6, 0, "", "",
"66 0f 1a 44 05 12    \tbndmov 0x12(%ebp,%eax,1),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x44, 0x08, 0x12, }, 6, 0, "", "",
"66 0f 1a 44 08 12    \tbndmov 0x12(%eax,%ecx,1),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x44, 0xc8, 0x12, }, 6, 0, "", "",
"66 0f 1a 44 c8 12    \tbndmov 0x12(%eax,%ecx,8),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"66 0f 1a 80 78 56 34 12 \tbndmov 0x12345678(%eax),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"66 0f 1a 85 78 56 34 12 \tbndmov 0x12345678(%ebp),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"66 0f 1a 84 01 78 56 34 12 \tbndmov 0x12345678(%ecx,%eax,1),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"66 0f 1a 84 05 78 56 34 12 \tbndmov 0x12345678(%ebp,%eax,1),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"66 0f 1a 84 08 78 56 34 12 \tbndmov 0x12345678(%eax,%ecx,1),%bnd0",},
{{0x66, 0x0f, 0x1a, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"66 0f 1a 84 c8 78 56 34 12 \tbndmov 0x12345678(%eax,%ecx,8),%bnd0",},
{{0x66, 0x0f, 0x1b, 0x00, }, 4, 0, "", "",
"66 0f 1b 00          \tbndmov %bnd0,(%eax)",},
{{0x66, 0x0f, 0x1b, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"66 0f 1b 05 78 56 34 12 \tbndmov %bnd0,0x12345678",},
{{0x66, 0x0f, 0x1b, 0x18, }, 4, 0, "", "",
"66 0f 1b 18          \tbndmov %bnd3,(%eax)",},
{{0x66, 0x0f, 0x1b, 0x04, 0x01, }, 5, 0, "", "",
"66 0f 1b 04 01       \tbndmov %bnd0,(%ecx,%eax,1)",},
{{0x66, 0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"66 0f 1b 04 05 78 56 34 12 \tbndmov %bnd0,0x12345678(,%eax,1)",},
{{0x66, 0x0f, 0x1b, 0x04, 0x08, }, 5, 0, "", "",
"66 0f 1b 04 08       \tbndmov %bnd0,(%eax,%ecx,1)",},
{{0x66, 0x0f, 0x1b, 0x04, 0xc8, }, 5, 0, "", "",
"66 0f 1b 04 c8       \tbndmov %bnd0,(%eax,%ecx,8)",},
{{0x66, 0x0f, 0x1b, 0x40, 0x12, }, 5, 0, "", "",
"66 0f 1b 40 12       \tbndmov %bnd0,0x12(%eax)",},
{{0x66, 0x0f, 0x1b, 0x45, 0x12, }, 5, 0, "", "",
"66 0f 1b 45 12       \tbndmov %bnd0,0x12(%ebp)",},
{{0x66, 0x0f, 0x1b, 0x44, 0x01, 0x12, }, 6, 0, "", "",
"66 0f 1b 44 01 12    \tbndmov %bnd0,0x12(%ecx,%eax,1)",},
{{0x66, 0x0f, 0x1b, 0x44, 0x05, 0x12, }, 6, 0, "", "",
"66 0f 1b 44 05 12    \tbndmov %bnd0,0x12(%ebp,%eax,1)",},
{{0x66, 0x0f, 0x1b, 0x44, 0x08, 0x12, }, 6, 0, "", "",
"66 0f 1b 44 08 12    \tbndmov %bnd0,0x12(%eax,%ecx,1)",},
{{0x66, 0x0f, 0x1b, 0x44, 0xc8, 0x12, }, 6, 0, "", "",
"66 0f 1b 44 c8 12    \tbndmov %bnd0,0x12(%eax,%ecx,8)",},
{{0x66, 0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"66 0f 1b 80 78 56 34 12 \tbndmov %bnd0,0x12345678(%eax)",},
{{0x66, 0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"66 0f 1b 85 78 56 34 12 \tbndmov %bnd0,0x12345678(%ebp)",},
{{0x66, 0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"66 0f 1b 84 01 78 56 34 12 \tbndmov %bnd0,0x12345678(%ecx,%eax,1)",},
{{0x66, 0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"66 0f 1b 84 05 78 56 34 12 \tbndmov %bnd0,0x12345678(%ebp,%eax,1)",},
{{0x66, 0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"66 0f 1b 84 08 78 56 34 12 \tbndmov %bnd0,0x12345678(%eax,%ecx,1)",},
{{0x66, 0x0f, 0x1b, 0x84, 0xc8, 0x78, 0x56, 0x34, 0x12, }, 9, 0, "", "",
"66 0f 1b 84 c8 78 56 34 12 \tbndmov %bnd0,0x12345678(%eax,%ecx,8)",},
{{0x66, 0x0f, 0x1a, 0xc8, }, 4, 0, "", "",
"66 0f 1a c8          \tbndmov %bnd0,%bnd1",},
{{0x66, 0x0f, 0x1a, 0xc1, }, 4, 0, "", "",
"66 0f 1a c1          \tbndmov %bnd1,%bnd0",},
{{0x0f, 0x1a, 0x00, }, 3, 0, "", "",
"0f 1a 00             \tbndldx (%eax),%bnd0",},
{{0x0f, 0x1a, 0x05, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "",
"0f 1a 05 78 56 34 12 \tbndldx 0x12345678,%bnd0",},
{{0x0f, 0x1a, 0x18, }, 3, 0, "", "",
"0f 1a 18             \tbndldx (%eax),%bnd3",},
{{0x0f, 0x1a, 0x04, 0x01, }, 4, 0, "", "",
"0f 1a 04 01          \tbndldx (%ecx,%eax,1),%bnd0",},
{{0x0f, 0x1a, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"0f 1a 04 05 78 56 34 12 \tbndldx 0x12345678(,%eax,1),%bnd0",},
{{0x0f, 0x1a, 0x04, 0x08, }, 4, 0, "", "",
"0f 1a 04 08          \tbndldx (%eax,%ecx,1),%bnd0",},
{{0x0f, 0x1a, 0x40, 0x12, }, 4, 0, "", "",
"0f 1a 40 12          \tbndldx 0x12(%eax),%bnd0",},
{{0x0f, 0x1a, 0x45, 0x12, }, 4, 0, "", "",
"0f 1a 45 12          \tbndldx 0x12(%ebp),%bnd0",},
{{0x0f, 0x1a, 0x44, 0x01, 0x12, }, 5, 0, "", "",
"0f 1a 44 01 12       \tbndldx 0x12(%ecx,%eax,1),%bnd0",},
{{0x0f, 0x1a, 0x44, 0x05, 0x12, }, 5, 0, "", "",
"0f 1a 44 05 12       \tbndldx 0x12(%ebp,%eax,1),%bnd0",},
{{0x0f, 0x1a, 0x44, 0x08, 0x12, }, 5, 0, "", "",
"0f 1a 44 08 12       \tbndldx 0x12(%eax,%ecx,1),%bnd0",},
{{0x0f, 0x1a, 0x80, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "",
"0f 1a 80 78 56 34 12 \tbndldx 0x12345678(%eax),%bnd0",},
{{0x0f, 0x1a, 0x85, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "",
"0f 1a 85 78 56 34 12 \tbndldx 0x12345678(%ebp),%bnd0",},
{{0x0f, 0x1a, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"0f 1a 84 01 78 56 34 12 \tbndldx 0x12345678(%ecx,%eax,1),%bnd0",},
{{0x0f, 0x1a, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"0f 1a 84 05 78 56 34 12 \tbndldx 0x12345678(%ebp,%eax,1),%bnd0",},
{{0x0f, 0x1a, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"0f 1a 84 08 78 56 34 12 \tbndldx 0x12345678(%eax,%ecx,1),%bnd0",},
{{0x0f, 0x1b, 0x00, }, 3, 0, "", "",
"0f 1b 00             \tbndstx %bnd0,(%eax)",},
{{0x0f, 0x1b, 0x05, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "",
"0f 1b 05 78 56 34 12 \tbndstx %bnd0,0x12345678",},
{{0x0f, 0x1b, 0x18, }, 3, 0, "", "",
"0f 1b 18             \tbndstx %bnd3,(%eax)",},
{{0x0f, 0x1b, 0x04, 0x01, }, 4, 0, "", "",
"0f 1b 04 01          \tbndstx %bnd0,(%ecx,%eax,1)",},
{{0x0f, 0x1b, 0x04, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"0f 1b 04 05 78 56 34 12 \tbndstx %bnd0,0x12345678(,%eax,1)",},
{{0x0f, 0x1b, 0x04, 0x08, }, 4, 0, "", "",
"0f 1b 04 08          \tbndstx %bnd0,(%eax,%ecx,1)",},
{{0x0f, 0x1b, 0x40, 0x12, }, 4, 0, "", "",
"0f 1b 40 12          \tbndstx %bnd0,0x12(%eax)",},
{{0x0f, 0x1b, 0x45, 0x12, }, 4, 0, "", "",
"0f 1b 45 12          \tbndstx %bnd0,0x12(%ebp)",},
{{0x0f, 0x1b, 0x44, 0x01, 0x12, }, 5, 0, "", "",
"0f 1b 44 01 12       \tbndstx %bnd0,0x12(%ecx,%eax,1)",},
{{0x0f, 0x1b, 0x44, 0x05, 0x12, }, 5, 0, "", "",
"0f 1b 44 05 12       \tbndstx %bnd0,0x12(%ebp,%eax,1)",},
{{0x0f, 0x1b, 0x44, 0x08, 0x12, }, 5, 0, "", "",
"0f 1b 44 08 12       \tbndstx %bnd0,0x12(%eax,%ecx,1)",},
{{0x0f, 0x1b, 0x80, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "",
"0f 1b 80 78 56 34 12 \tbndstx %bnd0,0x12345678(%eax)",},
{{0x0f, 0x1b, 0x85, 0x78, 0x56, 0x34, 0x12, }, 7, 0, "", "",
"0f 1b 85 78 56 34 12 \tbndstx %bnd0,0x12345678(%ebp)",},
{{0x0f, 0x1b, 0x84, 0x01, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"0f 1b 84 01 78 56 34 12 \tbndstx %bnd0,0x12345678(%ecx,%eax,1)",},
{{0x0f, 0x1b, 0x84, 0x05, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"0f 1b 84 05 78 56 34 12 \tbndstx %bnd0,0x12345678(%ebp,%eax,1)",},
{{0x0f, 0x1b, 0x84, 0x08, 0x78, 0x56, 0x34, 0x12, }, 8, 0, "", "",
"0f 1b 84 08 78 56 34 12 \tbndstx %bnd0,0x12345678(%eax,%ecx,1)",},
{{0xf2, 0xe8, 0xfc, 0xff, 0xff, 0xff, }, 6, 0xfffffffc, "call", "unconditional",
"f2 e8 fc ff ff ff    \tbnd call 3c3 <main+0x3c3>",},
{{0xf2, 0xff, 0x10, }, 3, 0, "call", "indirect",
"f2 ff 10             \tbnd call *(%eax)",},
{{0xf2, 0xc3, }, 2, 0, "ret", "indirect",
"f2 c3                \tbnd ret ",},
{{0xf2, 0xe9, 0xfc, 0xff, 0xff, 0xff, }, 6, 0xfffffffc, "jmp", "unconditional",
"f2 e9 fc ff ff ff    \tbnd jmp 3ce <main+0x3ce>",},
{{0xf2, 0xe9, 0xfc, 0xff, 0xff, 0xff, }, 6, 0xfffffffc, "jmp", "unconditional",
"f2 e9 fc ff ff ff    \tbnd jmp 3d4 <main+0x3d4>",},
{{0xf2, 0xff, 0x21, }, 3, 0, "jmp", "indirect",
"f2 ff 21             \tbnd jmp *(%ecx)",},
{{0xf2, 0x0f, 0x85, 0xfc, 0xff, 0xff, 0xff, }, 7, 0xfffffffc, "jcc", "conditional",
"f2 0f 85 fc ff ff ff \tbnd jne 3de <main+0x3de>",},
Loading