aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog4
-rw-r--r--binutils/objdump.c16
-rw-r--r--gdb/ChangeLog46
-rw-r--r--gdb/NEWS10
-rw-r--r--gdb/arm-tdep.c106
-rw-r--r--gdb/disasm.c179
-rw-r--r--gdb/disasm.h8
-rw-r--r--gdb/doc/gdb.texinfo21
-rw-r--r--gdb/gdbarch.c44
-rw-r--r--gdb/gdbarch.h9
-rwxr-xr-xgdb/gdbarch.sh5
-rw-r--r--gdb/rs6000-tdep.c7
-rw-r--r--gdb/s390-linux-tdep.c7
-rw-r--r--gdb/testsuite/ChangeLog27
-rw-r--r--gdb/testsuite/gdb.arch/arm-disassembler-options.exp56
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-altivec.exp261
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-altivec.s217
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-altivec2.exp178
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-altivec2.s135
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-altivec3.exp131
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-altivec3.s88
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-disassembler-options.exp56
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-power.exp1429
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-power.s1389
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-power7.exp164
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-power7.s121
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-power8.exp248
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-power8.s205
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-power9.exp445
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-power9.s402
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-vsx.exp225
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-vsx.s182
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-vsx2.exp118
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-vsx2.s75
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-vsx3.exp184
-rw-r--r--gdb/testsuite/gdb.arch/powerpc-vsx3.s141
-rw-r--r--gdb/testsuite/gdb.arch/s390-disassembler-options.exp56
-rw-r--r--gdb/testsuite/gdb.disasm/disassembler-options.exp34
-rw-r--r--include/ChangeLog16
-rw-r--r--include/dis-asm.h41
-rw-r--r--opcodes/ChangeLog43
-rw-r--r--opcodes/arm-dis.c169
-rw-r--r--opcodes/disassemble.c70
-rw-r--r--opcodes/po/opcodes.pot199
-rw-r--r--opcodes/ppc-dis.c59
-rw-r--r--opcodes/s390-dis.c72
46 files changed, 4603 insertions, 3095 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index f54c12d..7004b0b 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2017-02-28 Peter Bergner <bergner@vnet.ibm.com>
+
+ * objdump.c (main): Use remove_whitespace_and_extra_commas.
+
2017-02-27 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix compilation with GCC 4.4.7.
diff --git a/binutils/objdump.c b/binutils/objdump.c
index b9fecef..4609858 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -3728,12 +3728,16 @@ main (int argc, char **argv)
machine = optarg;
break;
case 'M':
- if (disassembler_options)
- /* Ignore potential memory leak for now. */
- disassembler_options = concat (disassembler_options, ",",
- optarg, (const char *) NULL);
- else
- disassembler_options = optarg;
+ {
+ char *options;
+ if (disassembler_options)
+ /* Ignore potential memory leak for now. */
+ options = concat (disassembler_options, ",",
+ optarg, (const char *) NULL);
+ else
+ options = optarg;
+ disassembler_options = remove_whitespace_and_extra_commas (options);
+ }
break;
case 'j':
add_only (optarg);
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index fafa10c..b060291 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,49 @@
+2017-02-28 Peter Bergner <bergner@vnet.ibm.com>
+
+ * NEWS: Mention new set/show disassembler-options commands.
+ * doc/gdb.texinfo: Document new set/show disassembler-options commands.
+ * disasm.c: Include "arch-utils.h", "gdbcmd.h" and "safe-ctype.h".
+ (prospective_options): New static variable.
+ (gdb_disassembler::gdb_disassembler): Initialize
+ m_di.disassembler_options.
+ (gdb_buffered_insn_length_init_dis): Initilize di->disassembler_options.
+ (get_disassembler_options): New function.
+ (set_disassembler_options): Likewise.
+ (set_disassembler_options_sfunc): Likewise.
+ (show_disassembler_options_sfunc): Likewise.
+ (disassembler_options_completer): Likewise.
+ (_initialize_disasm): Likewise.
+ * disasm.h (get_disassembler_options): New prototype.
+ (set_disassembler_options): Likewise.
+ * gdbarch.sh (gdbarch_disassembler_options): New variable.
+ (gdbarch_verify_disassembler_options): Likewise.
+ * gdbarch.c: Regenerate.
+ * gdbarch.h: Likewise.
+ * arm-tdep.c (num_disassembly_options): Delete.
+ (set_disassembly_style): Likewise.
+ (arm_disassembler_options): New static variable.
+ (set_disassembly_style_sfunc): Convert short style name into long
+ option name. Call set_disassembler_options.
+ (show_disassembly_style_sfunc): New function.
+ (arm_gdbarch_init): Call set_gdbarch_disassembler_options and
+ set_gdbarch_verify_disassembler_options.
+ (_initialize_arm_tdep): Delete regnames variable and update callers.
+ (arm_disassembler_options): Initialize.
+ (disasm_options): New variable.
+ (num_disassembly_options): Rename from this...
+ (num_disassembly_styles): ...to this. Compute by scanning through
+ disasm_options.
+ (valid_disassembly_styles): Initialize using disasm_options.
+ Remove calls to parse_arm_disassembler_option, get_arm_regnames and
+ set_arm_regname_option.
+ Pass show_disassembly_style_sfunc to the "disassembler" setshow command.
+ * rs6000-tdep.c (powerpc_disassembler_options): New static variable.
+ (rs6000_gdbarch_init): Call set_gdbarch_disassembler_options and
+ set_gdbarch_verify_disassembler_options.
+ * s390-tdep.c (s390_disassembler_options): New static variable.
+ (s390_gdbarch_init):all set_gdbarch_disassembler_options and
+ set_gdbarch_verify_disassembler_options.
+
2017-02-27 Simon Marchi <simon.marchi@ericsson.com>
* remote.c (remote_add_target_side_condition): Remove "struct"
diff --git a/gdb/NEWS b/gdb/NEWS
index 76de00e..cf58595 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -84,6 +84,16 @@ flash-erase
Erases all the flash memory regions reported by the target. This is
equivalent to the CLI command flash-erase.
+* New commands
+
+set disassembler-options
+show disassembler-options
+ Controls the passing of target specific information to the disassembler.
+ If it is necessary to specify more than one disassembler option then
+ multiple options can be placed together into a comma separated list.
+ The default value is the empty string. Currently, the only supported
+ targets are ARM, PowerPC and S/390.
+
*** Changes in GDB 7.12
* GDB and GDBserver now build with a C++ compiler by default.
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 88ed391..3aee722 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -145,9 +145,6 @@ static const char *const arm_mode_strings[] =
static const char *arm_fallback_mode_string = "auto";
static const char *arm_force_mode_string = "auto";
-/* Number of different reg name sets (options). */
-static int num_disassembly_options;
-
/* The standard register names, and all the valid aliases for them. Note
that `fp', `sp' and `pc' are not added in this alias list, because they
have been added as builtin user registers in
@@ -208,6 +205,9 @@ static const char *const arm_register_names[] =
"f4", "f5", "f6", "f7", /* 20 21 22 23 */
"fps", "cpsr" }; /* 24 25 */
+/* Holds the current set of options to be passed to the disassembler. */
+static char *arm_disassembler_options;
+
/* Valid register name styles. */
static const char **valid_disassembly_styles;
@@ -218,7 +218,9 @@ static const char *disassembly_style;
style. */
static void set_disassembly_style_sfunc(char *, int,
struct cmd_list_element *);
-static void set_disassembly_style (void);
+static void show_disassembly_style_sfunc (struct ui_file *, int,
+ struct cmd_list_element *,
+ const char *);
static void convert_from_extended (const struct floatformat *, const void *,
void *, int);
@@ -8539,9 +8541,32 @@ arm_show_force_mode (struct ui_file *file, int from_tty,
static void
set_disassembly_style_sfunc (char *args, int from_tty,
- struct cmd_list_element *c)
+ struct cmd_list_element *c)
{
- set_disassembly_style ();
+ /* Convert the short style name into the long style name (eg, reg-names-*)
+ before calling the generic set_disassembler_options() function. */
+ std::string long_name = std::string ("reg-names-") + disassembly_style;
+ set_disassembler_options (&long_name[0]);
+}
+
+static void
+show_disassembly_style_sfunc (struct ui_file *file, int from_tty,
+ struct cmd_list_element *c, const char *value)
+{
+ struct gdbarch *gdbarch = get_current_arch ();
+ char *options = get_disassembler_options (gdbarch);
+ const char *style = "";
+ int len = 0;
+ char *opt;
+
+ FOR_EACH_DISASSEMBLER_OPTION (opt, options)
+ if (CONST_STRNEQ (opt, "reg-names-"))
+ {
+ style = &opt[strlen ("reg-names-")];
+ len = strcspn (style, ",");
+ }
+
+ fprintf_unfiltered (file, "The disassembly style is \"%.*s\".\n", len, style);
}
/* Return the ARM register name corresponding to register I. */
@@ -8582,21 +8607,6 @@ arm_register_name (struct gdbarch *gdbarch, int i)
return arm_register_names[i];
}
-static void
-set_disassembly_style (void)
-{
- int current;
-
- /* Find the style that the user wants. */
- for (current = 0; current < num_disassembly_options; current++)
- if (disassembly_style == valid_disassembly_styles[current])
- break;
- gdb_assert (current < num_disassembly_options);
-
- /* Synchronize the disassembler. */
- set_arm_regname_option (current);
-}
-
/* Test whether the coff symbol specific value corresponds to a Thumb
function. */
@@ -9556,6 +9566,9 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
user_reg_add (gdbarch, arm_register_aliases[i].name,
value_of_arm_user_reg, &arm_register_aliases[i].regnum);
+ set_gdbarch_disassembler_options (gdbarch, &arm_disassembler_options);
+ set_gdbarch_valid_disassembler_options (gdbarch, disassembler_options_arm ());
+
return gdbarch;
}
@@ -9579,8 +9592,7 @@ _initialize_arm_tdep (void)
long length;
const char *setname;
const char *setdesc;
- const char *const *regnames;
- int i;
+ int i, j;
char regdesc[1024], *rdptr = regdesc;
size_t rest = sizeof (regdesc);
@@ -9608,9 +9620,6 @@ _initialize_arm_tdep (void)
initialize_tdesc_arm_with_vfpv3 ();
initialize_tdesc_arm_with_neon ();
- /* Get the number of possible sets of register names defined in opcodes. */
- num_disassembly_options = get_arm_regname_num_options ();
-
/* Add root prefix command for all "set arm"/"show arm" commands. */
add_prefix_cmd ("arm", no_class, set_arm_command,
_("Various ARM-specific commands."),
@@ -9620,30 +9629,30 @@ _initialize_arm_tdep (void)
_("Various ARM-specific commands."),
&showarmcmdlist, "show arm ", 0, &showlist);
- /* Sync the opcode insn printer with our register viewer. */
- parse_arm_disassembler_option ("reg-names-std");
- /* Initialize the array that will be passed to
- add_setshow_enum_cmd(). */
+ arm_disassembler_options = xstrdup ("reg-names-std");
+ const disasm_options_t *disasm_options = disassembler_options_arm ();
+ int num_disassembly_styles = 0;
+ for (i = 0; disasm_options->name[i] != NULL; i++)
+ if (CONST_STRNEQ (disasm_options->name[i], "reg-names-"))
+ num_disassembly_styles++;
+
+ /* Initialize the array that will be passed to add_setshow_enum_cmd(). */
valid_disassembly_styles = XNEWVEC (const char *,
- num_disassembly_options + 1);
- for (i = 0; i < num_disassembly_options; i++)
- {
- get_arm_regnames (i, &setname, &setdesc, &regnames);
- valid_disassembly_styles[i] = setname;
- length = snprintf (rdptr, rest, "%s - %s\n", setname, setdesc);
- rdptr += length;
- rest -= length;
- /* When we find the default names, tell the disassembler to use
- them. */
- if (!strcmp (setname, "std"))
- {
- disassembly_style = setname;
- set_arm_regname_option (i);
- }
- }
+ num_disassembly_styles + 1);
+ for (i = j = 0; disasm_options->name[i] != NULL; i++)
+ if (CONST_STRNEQ (disasm_options->name[i], "reg-names-"))
+ {
+ size_t offset = strlen ("reg-names-");
+ const char *style = disasm_options->name[i];
+ valid_disassembly_styles[j++] = &style[offset];
+ length = snprintf (rdptr, rest, "%s - %s\n", &style[offset],
+ disasm_options->description[i]);
+ rdptr += length;
+ rest -= length;
+ }
/* Mark the end of valid options. */
- valid_disassembly_styles[num_disassembly_options] = NULL;
+ valid_disassembly_styles[num_disassembly_styles] = NULL;
/* Create the help text. */
std::string helptext = string_printf ("%s%s%s",
@@ -9657,8 +9666,7 @@ _initialize_arm_tdep (void)
_("Show the disassembly style."),
helptext.c_str (),
set_disassembly_style_sfunc,
- NULL, /* FIXME: i18n: The disassembly style is
- \"%s\". */
+ show_disassembly_style_sfunc,
&setarmcmdlist, &showarmcmdlist);
add_setshow_boolean_cmd ("apcs32", no_class, &arm_apcs_32,
diff --git a/gdb/disasm.c b/gdb/disasm.c
index 64d6684..ab080e2 100644
--- a/gdb/disasm.c
+++ b/gdb/disasm.c
@@ -18,19 +18,26 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
+#include "arch-utils.h"
#include "target.h"
#include "value.h"
#include "ui-out.h"
#include "disasm.h"
#include "gdbcore.h"
+#include "gdbcmd.h"
#include "dis-asm.h"
#include "source.h"
+#include "safe-ctype.h"
#include <algorithm>
/* Disassemble functions.
FIXME: We should get rid of all the duplicate code in gdb that does
the same thing: disassemble_command() and the gdbtk variation. */
+/* This variable is used to hold the prospective disassembler_options value
+ which is set by the "set disassembler_options" command. */
+static char *prospective_options = NULL;
+
/* This structure is used to store line number information for the
deprecated /m option.
We need a different sort of line table from the normal one cuz we can't
@@ -780,6 +787,7 @@ gdb_disassembler::gdb_disassembler (struct gdbarch *gdbarch,
m_di.endian = gdbarch_byte_order (gdbarch);
m_di.endian_code = gdbarch_byte_order_for_code (gdbarch);
m_di.application_data = this;
+ m_di.disassembler_options = get_disassembler_options (gdbarch);
disassemble_init_for_target (&m_di);
}
@@ -888,6 +896,7 @@ gdb_buffered_insn_length_init_dis (struct gdbarch *gdbarch,
di->endian = gdbarch_byte_order (gdbarch);
di->endian_code = gdbarch_byte_order_for_code (gdbarch);
+ di->disassembler_options = get_disassembler_options (gdbarch);
disassemble_init_for_target (di);
}
@@ -904,3 +913,173 @@ gdb_buffered_insn_length (struct gdbarch *gdbarch,
return gdbarch_print_insn (gdbarch, addr, &di);
}
+
+char *
+get_disassembler_options (struct gdbarch *gdbarch)
+{
+ char **disassembler_options = gdbarch_disassembler_options (gdbarch);
+ if (disassembler_options == NULL)
+ return NULL;
+ return *disassembler_options;
+}
+
+void
+set_disassembler_options (char *prospective_options)
+{
+ struct gdbarch *gdbarch = get_current_arch ();
+ char **disassembler_options = gdbarch_disassembler_options (gdbarch);
+ const disasm_options_t *valid_options;
+ char *options = remove_whitespace_and_extra_commas (prospective_options);
+ char *opt;
+
+ /* Allow all architectures, even ones that do not support 'set disassembler',
+ to reset their disassembler options to NULL. */
+ if (options == NULL)
+ {
+ if (disassembler_options != NULL)
+ {
+ free (*disassembler_options);
+ *disassembler_options = NULL;
+ }
+ return;
+ }
+
+ valid_options = gdbarch_valid_disassembler_options (gdbarch);
+ if (valid_options == NULL)
+ {
+ fprintf_filtered (gdb_stdlog, _("\
+'set disassembler-options ...' is not supported on this architecture.\n"));
+ return;
+ }
+
+ /* Verify we have valid disassembler options. */
+ FOR_EACH_DISASSEMBLER_OPTION (opt, options)
+ {
+ size_t i;
+ for (i = 0; valid_options->name[i] != NULL; i++)
+ if (disassembler_options_cmp (opt, valid_options->name[i]) == 0)
+ break;
+ if (valid_options->name[i] == NULL)
+ {
+ fprintf_filtered (gdb_stdlog,
+ _("Invalid disassembler option value: '%s'.\n"),
+ opt);
+ return;
+ }
+ }
+
+ free (*disassembler_options);
+ *disassembler_options = xstrdup (options);
+}
+
+static void
+set_disassembler_options_sfunc (char *args, int from_tty,
+ struct cmd_list_element *c)
+{
+ set_disassembler_options (prospective_options);
+}
+
+static void
+show_disassembler_options_sfunc (struct ui_file *file, int from_tty,
+ struct cmd_list_element *c, const char *value)
+{
+ struct gdbarch *gdbarch = get_current_arch ();
+ const disasm_options_t *valid_options;
+
+ const char *options = get_disassembler_options (gdbarch);
+ if (options == NULL)
+ options = "";
+
+ fprintf_filtered (file, _("The current disassembler options are '%s'\n"),
+ options);
+
+ valid_options = gdbarch_valid_disassembler_options (gdbarch);
+
+ if (valid_options == NULL)
+ return;
+
+ fprintf_filtered (file, _("\n\
+The following disassembler options are supported for use with the\n\
+'set disassembler-options <option>[,<option>...]' command:\n"));
+
+ if (valid_options->description != NULL)
+ {
+ size_t i, max_len = 0;
+
+ /* Compute the length of the longest option name. */
+ for (i = 0; valid_options->name[i] != NULL; i++)
+ {
+ size_t len = strlen (valid_options->name[i]);
+ if (max_len < len)
+ max_len = len;
+ }
+
+ for (i = 0, max_len++; valid_options->name[i] != NULL; i++)
+ {
+ fprintf_filtered (file, " %s", valid_options->name[i]);
+ if (valid_options->description[i] != NULL)
+ fprintf_filtered (file, "%*c %s",
+ (int)(max_len - strlen (valid_options->name[i])), ' ',
+ valid_options->description[i]);
+ fprintf_filtered (file, "\n");
+ }
+ }
+ else
+ {
+ size_t i;
+ fprintf_filtered (file, " ");
+ for (i = 0; valid_options->name[i] != NULL; i++)
+ {
+ fprintf_filtered (file, "%s", valid_options->name[i]);
+ if (valid_options->name[i + 1] != NULL)
+ fprintf_filtered (file, ", ");
+ wrap_here (" ");
+ }
+ fprintf_filtered (file, "\n");
+ }
+}
+
+/* A completion function for "set disassembler". */
+
+static VEC (char_ptr) *
+disassembler_options_completer (struct cmd_list_element *ignore,
+ const char *text, const char *word)
+{
+ struct gdbarch *gdbarch = get_current_arch ();
+ const disasm_options_t *opts = gdbarch_valid_disassembler_options (gdbarch);
+
+ if (opts != NULL)
+ {
+ /* Only attempt to complete on the last option text. */
+ const char *separator = strrchr (text, ',');
+ if (separator != NULL)
+ text = separator + 1;
+ text = skip_spaces_const (text);
+ return complete_on_enum (opts->name, text, word);
+ }
+ return NULL;
+}
+
+
+/* Initialization code. */
+
+/* -Wmissing-prototypes */
+extern initialize_file_ftype _initialize_disasm;
+
+void
+_initialize_disasm (void)
+{
+ struct cmd_list_element *cmd;
+
+ /* Add the command that controls the disassembler options. */
+ cmd = add_setshow_string_noescape_cmd ("disassembler-options", no_class,
+ &prospective_options, _("\
+Set the disassembler options.\n\
+Usage: set disassembler-options <option>[,<option>...]\n\n\
+See: 'show disassembler-options' for valid option values.\n"), _("\
+Show the disassembler options."), NULL,
+ set_disassembler_options_sfunc,
+ show_disassembler_options_sfunc,
+ &setlist, &showlist);
+ set_cmd_completer (cmd, disassembler_options_completer);
+}
diff --git a/gdb/disasm.h b/gdb/disasm.h
index 42c1f3a..ad3e8dd 100644
--- a/gdb/disasm.h
+++ b/gdb/disasm.h
@@ -138,4 +138,12 @@ extern int gdb_buffered_insn_length (struct gdbarch *gdbarch,
const gdb_byte *insn, int max_len,
CORE_ADDR memaddr);
+/* Returns GDBARCH's disassembler options. */
+
+extern char *get_disassembler_options (struct gdbarch *gdbarch);
+
+/* Sets the active gdbarch's disassembler options to OPTIONS. */
+
+extern void set_disassembler_options (char *options);
+
#endif
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 962325b..f19e80f 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -8520,6 +8520,27 @@ location of the relocation table. On some architectures, @value{GDBN}
might be able to resolve these to actual function names.
@table @code
+@kindex set disassembler-options
+@cindex disassembler options
+@item set disassembler-options @var{option1}[,@var{option2}@dots{}]
+This command controls the passing of target specific information to
+the disassembler. For a list of valid options, please refer to the
+@code{-M}/@code{--disassembler-options} section of the @samp{objdump}
+manual and/or the output of @kbd{objdump --help}
+(@pxref{objdump,,objdump,binutils.info,The GNU Binary Utilities}).
+The default value is the empty string.
+
+If it is necessary to specify more than one disassembler option, then
+multiple options can be placed together into a comma separated list.
+Currently this command is only supported on targets ARM, PowerPC
+and S/390.
+
+@kindex show disassembler-options
+@item show disassembler-options
+Show the current setting of the disassembler options.
+@end table
+
+@table @code
@kindex set disassembly-flavor
@cindex Intel disassembly flavor
@cindex AT&T disassembly flavor
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
index 266f2e9..f52cf5d 100644
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
@@ -339,6 +339,8 @@ struct gdbarch
gdbarch_gcc_target_options_ftype *gcc_target_options;
gdbarch_gnu_triplet_regexp_ftype *gnu_triplet_regexp;
gdbarch_addressable_memory_unit_size_ftype *addressable_memory_unit_size;
+ char ** disassembler_options;
+ const disasm_options_t * valid_disassembler_options;
};
/* Create a new ``struct gdbarch'' based on information provided by
@@ -692,6 +694,8 @@ verify_gdbarch (struct gdbarch *gdbarch)
/* Skip verify of gcc_target_options, invalid_p == 0 */
/* Skip verify of gnu_triplet_regexp, invalid_p == 0 */
/* Skip verify of addressable_memory_unit_size, invalid_p == 0 */
+ /* Skip verify of disassembler_options, invalid_p == 0 */
+ /* Skip verify of valid_disassembler_options, invalid_p == 0 */
if (!log.empty ())
internal_error (__FILE__, __LINE__,
_("verify_gdbarch: the following are invalid ...%s"),
@@ -875,6 +879,9 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
"gdbarch_dump: deprecated_function_start_offset = %s\n",
core_addr_to_string_nz (gdbarch->deprecated_function_start_offset));
fprintf_unfiltered (file,
+ "gdbarch_dump: disassembler_options = %s\n",
+ pstring (*gdbarch->disassembler_options));
+ fprintf_unfiltered (file,
"gdbarch_dump: gdbarch_displaced_step_copy_insn_p() = %d\n",
gdbarch_displaced_step_copy_insn_p (gdbarch));
fprintf_unfiltered (file,
@@ -1421,6 +1428,9 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
"gdbarch_dump: unwind_sp = <%s>\n",
host_address_to_string (gdbarch->unwind_sp));
fprintf_unfiltered (file,
+ "gdbarch_dump: valid_disassembler_options = %s\n",
+ host_address_to_string (gdbarch->valid_disassembler_options->name));
+ fprintf_unfiltered (file,
"gdbarch_dump: value_from_register = <%s>\n",
host_address_to_string (gdbarch->value_from_register));
fprintf_unfiltered (file,
@@ -4956,6 +4966,40 @@ set_gdbarch_addressable_memory_unit_size (struct gdbarch *gdbarch,
gdbarch->addressable_memory_unit_size = addressable_memory_unit_size;
}
+char **
+gdbarch_disassembler_options (struct gdbarch *gdbarch)
+{
+ gdb_assert (gdbarch != NULL);
+ /* Skip verify of disassembler_options, invalid_p == 0 */
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_disassembler_options called\n");
+ return gdbarch->disassembler_options;
+}
+
+void
+set_gdbarch_disassembler_options (struct gdbarch *gdbarch,
+ char ** disassembler_options)
+{
+ gdbarch->disassembler_options = disassembler_options;
+}
+
+const disasm_options_t *
+gdbarch_valid_disassembler_options (struct gdbarch *gdbarch)
+{
+ gdb_assert (gdbarch != NULL);
+ /* Skip verify of valid_disassembler_options, invalid_p == 0 */
+ if (gdbarch_debug >= 2)
+ fprintf_unfiltered (gdb_stdlog, "gdbarch_valid_disassembler_options called\n");
+ return gdbarch->valid_disassembler_options;
+}
+
+void
+set_gdbarch_valid_disassembler_options (struct gdbarch *gdbarch,
+ const disasm_options_t * valid_disassembler_options)
+{
+ gdbarch->valid_disassembler_options = valid_disassembler_options;
+}
+
/* Keep a registry of per-architecture data-pointers required by GDB
modules. */
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h
index 50bc6a9..34f82a7 100644
--- a/gdb/gdbarch.h
+++ b/gdb/gdbarch.h
@@ -36,6 +36,7 @@
#define GDBARCH_H
#include "frame.h"
+#include "dis-asm.h"
struct floatformat;
struct ui_file;
@@ -1545,6 +1546,14 @@ typedef int (gdbarch_addressable_memory_unit_size_ftype) (struct gdbarch *gdbarc
extern int gdbarch_addressable_memory_unit_size (struct gdbarch *gdbarch);
extern void set_gdbarch_addressable_memory_unit_size (struct gdbarch *gdbarch, gdbarch_addressable_memory_unit_size_ftype *addressable_memory_unit_size);
+/* Functions for allowing a target to modify its disassembler options. */
+
+extern char ** gdbarch_disassembler_options (struct gdbarch *gdbarch);
+extern void set_gdbarch_disassembler_options (struct gdbarch *gdbarch, char ** disassembler_options);
+
+extern const disasm_options_t * gdbarch_valid_disassembler_options (struct gdbarch *gdbarch);
+extern void set_gdbarch_valid_disassembler_options (struct gdbarch *gdbarch, const disasm_options_t * valid_disassembler_options);
+
/* Definition for an unknown syscall, used basically in error-cases. */
#define UNKNOWN_SYSCALL (-1)
diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh
index 54549b6..6902e0e 100755
--- a/gdb/gdbarch.sh
+++ b/gdb/gdbarch.sh
@@ -1163,6 +1163,10 @@ m:const char *:gnu_triplet_regexp:void:::default_gnu_triplet_regexp::0
# each address in memory.
m:int:addressable_memory_unit_size:void:::default_addressable_memory_unit_size::0
+# Functions for allowing a target to modify its disassembler options.
+v:char **:disassembler_options:::0:0::0:pstring (*gdbarch->disassembler_options)
+v:const disasm_options_t *:valid_disassembler_options:::0:0::0:host_address_to_string (gdbarch->valid_disassembler_options->name)
+
EOF
}
@@ -1259,6 +1263,7 @@ cat <<EOF
#define GDBARCH_H
#include "frame.h"
+#include "dis-asm.h"
struct floatformat;
struct ui_file;
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 72ee05d..67c4d51 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -106,6 +106,9 @@
&& (regnum) >= (tdep)->ppc_efpr0_regnum \
&& (regnum) < (tdep)->ppc_efpr0_regnum + ppc_num_efprs)
+/* Holds the current set of options to be passed to the disassembler. */
+static char *powerpc_disassembler_options;
+
/* The list of available "set powerpc ..." and "show powerpc ..."
commands. */
static struct cmd_list_element *setpowerpccmdlist = NULL;
@@ -6609,6 +6612,10 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
else
register_ppc_ravenscar_ops (gdbarch);
+ set_gdbarch_disassembler_options (gdbarch, &powerpc_disassembler_options);
+ set_gdbarch_valid_disassembler_options (gdbarch,
+ disassembler_options_powerpc ());
+
return gdbarch;
}
diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c
index febdd14..abc9438 100644
--- a/gdb/s390-linux-tdep.c
+++ b/gdb/s390-linux-tdep.c
@@ -79,6 +79,9 @@
#define XML_SYSCALL_FILENAME_S390 "syscalls/s390-linux.xml"
#define XML_SYSCALL_FILENAME_S390X "syscalls/s390x-linux.xml"
+/* Holds the current set of options to be passed to the disassembler. */
+static char *s390_disassembler_options;
+
enum s390_abi_kind
{
ABI_LINUX_S390,
@@ -8113,6 +8116,10 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
s390_init_linux_record_tdep (&s390_linux_record_tdep, ABI_LINUX_S390);
s390_init_linux_record_tdep (&s390x_linux_record_tdep, ABI_LINUX_ZSERIES);
+ set_gdbarch_disassembler_options (gdbarch, &s390_disassembler_options);
+ set_gdbarch_valid_disassembler_options (gdbarch,
+ disassembler_options_s390 ());
+
return gdbarch;
}
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index b102b87..cb8bf53 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,30 @@
+2017-02-28 Peter Bergner <bergner@vnet.ibm.com>
+
+ * gdb.arch/powerpc-power.exp: Delete test.
+ * gdb.arch/powerpc-power.s: Likewise.
+ * gdb.disasm/disassembler-options.exp: New test.
+ * gdb.arch/powerpc-altivec.exp: Likewise.
+ * gdb.arch/powerpc-altivec.s: Likewise.
+ * gdb.arch/powerpc-altivec2.exp: Likewise.
+ * gdb.arch/powerpc-altivec2.s: Likewise.
+ * gdb.arch/powerpc-altivec3.exp: Likewise.
+ * gdb.arch/powerpc-altivec3.s: Likewise.
+ * gdb.arch/powerpc-power7.exp: Likewise.
+ * gdb.arch/powerpc-power7.s: Likewise.
+ * gdb.arch/powerpc-power8.exp: Likewise.
+ * gdb.arch/powerpc-power8.s: Likewise.
+ * gdb.arch/powerpc-power9.exp: Likewise.
+ * gdb.arch/powerpc-power9.s: Likewise.
+ * gdb.arch/powerpc-vsx.exp: Likewise.
+ * gdb.arch/powerpc-vsx.s: Likewise.
+ * gdb.arch/powerpc-vsx2.exp: Likewise.
+ * gdb.arch/powerpc-vsx2.s: Likewise.
+ * gdb.arch/powerpc-vsx3.exp: Likewise.
+ * gdb.arch/powerpc-vsx3.s: Likewise.
+ * gdb.arch/arm-disassembler-options.exp: Likewise.
+ * gdb.arch/powerpc-disassembler-options.exp: Likewise.
+ * gdb.arch/s390-disassembler-options.exp: Likewise.
+
2017-02-23 Luis Machado <lgustavo@codesourcery.com>
* gdb.reverse/insn-reverse.x86.c (check_rdrand_support): Renamed to ...
diff --git a/gdb/testsuite/gdb.arch/arm-disassembler-options.exp b/gdb/testsuite/gdb.arch/arm-disassembler-options.exp
new file mode 100644
index 0000000..0116e6b
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/arm-disassembler-options.exp
@@ -0,0 +1,56 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# This test exercises set/show disassembler-options results are preserved
+# across multiple set architecture calls.
+
+if {![istarget "arm*-*-*"]} then {
+ verbose "Skipping ARM disassembler options."
+ return
+}
+
+gdb_exit
+gdb_start
+
+set option "reg-names-gcc,force-thumb"
+set arch1 "armv2"
+set arch2 "armv5"
+
+gdb_test "set architecture $arch1" \
+ "The target architecture is assumed to be $arch1" \
+ "set architecture $arch1"
+
+gdb_test_no_output "set disassembler-options"
+gdb_test "show disassembler-options" \
+ "The current disassembler options are ''.*" \
+ "show NULL disassembler-options"
+
+gdb_test_no_output "set disassembler-options $option"
+gdb_test "show disassembler-options" \
+ "The current disassembler options are '$option'.*" \
+ "show disassembler-options $option"
+
+# Change architectures and verify the disassembler options have been preserved.
+
+gdb_test "set architecture $arch2" \
+ "The target architecture is assumed to be $arch2" \
+ "set architecture $arch2"
+
+gdb_test "show disassembler-options" \
+ "The current disassembler options are '$option'.*" \
+ "show disassembler-options $option"
+
diff --git a/gdb/testsuite/gdb.arch/powerpc-altivec.exp b/gdb/testsuite/gdb.arch/powerpc-altivec.exp
new file mode 100644
index 0000000..2587847
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-altivec.exp
@@ -0,0 +1,261 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# Test PowerPC instructions disassembly.
+
+standard_testfile .s
+set objfile [standard_output_file ${testfile}.o]
+
+if {![istarget "powerpc*-*-*"]} then {
+ verbose "Skipping PowerPC instructions disassembly."
+ return
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC instructions disassembly"
+ return -1
+}
+
+clean_restart ${objfile}
+
+# Disassemble the function.
+set func ""
+
+gdb_test "set disassembler-options altivec"
+set test "disass func"
+gdb_test_multiple $test $test {
+ -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
+ set func $expect_out(1,string)
+ pass $test
+ }
+}
+
+proc instr_to_patt {instr} {
+ global decimal hex
+ # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
+ return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]"
+}
+
+proc func_check {instr} {
+ global func
+
+ set test "found: '$instr'"
+ set peb [instr_to_patt $instr]
+ if [regexp -nocase -line [instr_to_patt $instr] $func] {
+ pass $test
+ } else {
+ fail $peb
+ }
+}
+
+func_check "dss 3"
+func_check "dssall"
+func_check "dst r5,r4,1"
+func_check "dstt r8,r7,0"
+func_check "dstst r5,r6,3"
+func_check "dststt r4,r5,2"
+func_check "lvebx v30,r22,r24"
+func_check "lvebx v21,0,r24"
+func_check "lvehx v10,r16,r2"
+func_check "lvehx v20,0,r23"
+func_check "lvewx v17,r4,r18"
+func_check "lvewx v23,0,r8"
+func_check "lvsl v6,0,r25"
+func_check "lvsl v2,0,r6"
+func_check "lvsr v22,r16,r12"
+func_check "lvsr v0,0,r29"
+func_check "lvxl v15,r5,r13"
+func_check "lvxl v19,0,r23"
+func_check "lvx v22,r1,r2"
+func_check "lvx v18,0,r17"
+func_check "mfvrsave r31"
+func_check "mfvscr v24"
+func_check "mtvrsave r10"
+func_check "mtvscr v25"
+func_check "stvebx v18,r27,r10"
+func_check "stvebx v16,0,r6"
+func_check "stvehx v17,r13,r16"
+func_check "stvehx v23,0,r20"
+func_check "stvewx v11,r19,r31"
+func_check "stvewx v31,0,r1"
+func_check "stvxl v26,r21,r17"
+func_check "stvxl v13,0,r22"
+func_check "stvx v11,r31,r31"
+func_check "stvx v30,0,r16"
+func_check "vaddcuw v24,v7,v28"
+func_check "vaddfp v3,v30,v11"
+func_check "vaddsbs v8,v28,v9"
+func_check "vaddshs v7,v5,v4"
+func_check "vaddsws v22,v26,v27"
+func_check "vaddubm v16,v14,v28"
+func_check "vaddubs v6,v1,v25"
+func_check "vadduhm v2,v4,v6"
+func_check "vadduhs v26,v21,v8"
+func_check "vadduwm v29,v31,v1"
+func_check "vadduws v23,v13,v4"
+func_check "vandc v30,v16,v9"
+func_check "vand v3,v13,v27"
+func_check "vavgsb v4,v6,v17"
+func_check "vavgsh v23,v28,v19"
+func_check "vavgsw v8,v15,v31"
+func_check "vavgub v6,v7,v25"
+func_check "vavguh v25,v22,v10"
+func_check "vavguw v3,v23,v29"
+func_check "vctsxs v14,v2,6"
+func_check "vctuxs v9,v31,20"
+func_check "vcfsx v24,v30,3"
+func_check "vcfux v17,v21,29"
+func_check "vcmpbfp v18,v28,v0"
+func_check "vcmpbfp. v19,v26,v3"
+func_check "vcmpeqfp v16,v2,v11"
+func_check "vcmpeqfp. v23,v13,v13"
+func_check "vcmpequb v25,v19,v10"
+func_check "vcmpequb. v18,v11,v2"
+func_check "vcmpequh v9,v25,v7"
+func_check "vcmpequh. v14,v24,v21"
+func_check "vcmpequw v24,v12,v5"
+func_check "vcmpequw. v19,v16,v1"
+func_check "vcmpgefp v23,v17,v16"
+func_check "vcmpgefp. v19,v29,v17"
+func_check "vcmpgtfp v16,v28,v13"
+func_check "vcmpgtfp. v14,v24,v7"
+func_check "vcmpgtsb v16,v22,v6"
+func_check "vcmpgtsb. v2,v12,v14"
+func_check "vcmpgtsh v28,v3,v29"
+func_check "vcmpgtsh. v16,v19,v13"
+func_check "vcmpgtsw v15,v0,v5"
+func_check "vcmpgtsw. v21,v13,v0"
+func_check "vcmpgtub v5,v10,v30"
+func_check "vcmpgtub. v7,v13,v10"
+func_check "vcmpgtuh v24,v15,v16"
+func_check "vcmpgtuh. v25,v21,v27"
+func_check "vcmpgtuw v17,v27,v6"
+func_check "vcmpgtuw. v8,v21,v27"
+func_check "vcfsx v1,v1,14"
+func_check "vctsxs v4,v15,25"
+func_check "vctuxs v28,v23,14"
+func_check "vcfux v6,v6,0"
+func_check "vexptefp v0,v8"
+func_check "vlogefp v22,v27"
+func_check "vmaddfp v23,v18,v5,v18"
+func_check "vmaxfp v13,v13,v27"
+func_check "vmaxsb v8,v23,v14"
+func_check "vmaxsh v19,v17,v0"
+func_check "vmaxsw v19,v3,v22"
+func_check "vmaxub v23,v30,v28"
+func_check "vmaxuh v9,v20,v23"
+func_check "vmaxuw v21,v19,v1"
+func_check "vmhaddshs v22,v13,v5,v22"
+func_check "vmhraddshs v31,v0,v3,v18"
+func_check "vminfp v2,v21,v24"
+func_check "vminsb v20,v6,v10"
+func_check "vminsh v18,v27,v26"
+func_check "vminsw v3,v4,v1"
+func_check "vminub v7,v0,v13"
+func_check "vminuh v0,v12,v6"
+func_check "vminuw v6,v3,v1"
+func_check "vmladduhm v3,v29,v3,v26"
+func_check "vmrghb v21,v5,v31"
+func_check "vmrghh v21,v24,v0"
+func_check "vmrghw v16,v0,v22"
+func_check "vmrglb v1,v17,v16"
+func_check "vmrglh v14,v8,v15"
+func_check "vmrglw v31,v21,v5"
+func_check "vmr v24,v9"
+func_check "vmr v24,v9"
+func_check "vmsummbm v0,v24,v15,v23"
+func_check "vmsumshm v1,v4,v7,v25"
+func_check "vmsumshs v9,v8,v13,v31"
+func_check "vmsumubm v23,v31,v12,v30"
+func_check "vmsumuhm v29,v0,v26,v21"
+func_check "vmsumuhs v27,v14,v25,v5"
+func_check "vmulesb v10,v25,v14"
+func_check "vmulesh v1,v18,v8"
+func_check "vmuleub v17,v14,v9"
+func_check "vmuleuh v5,v26,v9"
+func_check "vmulosb v21,v18,v6"
+func_check "vmulosh v4,v5,v8"
+func_check "vmuloub v2,v9,v19"
+func_check "vmulouh v29,v5,v4"
+func_check "vnmsubfp v8,v2,v6,v5"
+func_check "vnor v31,v9,v10"
+func_check "vnot v25,v31"
+func_check "vnot v25,v31"
+func_check "vor v23,v7,v2"
+func_check "vperm v0,v28,v22,v25"
+func_check "vpkpx v16,v25,v17"
+func_check "vpkshss v12,v16,v17"
+func_check "vpkshus v1,v19,v23"
+func_check "vpkswss v25,v7,v13"
+func_check "vpkswus v4,v24,v10"
+func_check "vpkuhum v9,v27,v12"
+func_check "vpkuhus v22,v10,v25"
+func_check "vpkuwum v30,v18,v0"
+func_check "vpkuwus v7,v3,v22"
+func_check "vrefp v24,v28"
+func_check "vrfim v17,v19"
+func_check "vrfin v24,v25"
+func_check "vrfip v3,v5"
+func_check "vrfiz v8,v10"
+func_check "vrlb v26,v18,v30"
+func_check "vrlh v16,v17,v25"
+func_check "vrlw v23,v30,v9"
+func_check "vrsqrtefp v2,v18"
+func_check "vsel v20,v14,v18,v10"
+func_check "vslb v25,v25,v12"
+func_check "vsldoi v9,v9,v12,7"
+func_check "vslh v14,v2,v11"
+func_check "vslo v30,v5,v6"
+func_check "vsl v22,v30,v9"
+func_check "vslw v26,v26,v3"
+func_check "vspltb v1,v20,6"
+func_check "vsplth v16,v18,3"
+func_check "vspltisb v25,-13"
+func_check "vspltish v22,10"
+func_check "vspltisw v13,13"
+func_check "vspltw v9,v18,2"
+func_check "vsrab v14,v22,v0"
+func_check "vsrah v12,v12,v18"
+func_check "vsraw v2,v2,v13"
+func_check "vsrb v7,v27,v5"
+func_check "vsrh v7,v11,v29"
+func_check "vsro v18,v30,v31"
+func_check "vsr v2,v9,v28"
+func_check "vsrw v0,v25,v0"
+func_check "vsubcuw v24,v2,v10"
+func_check "vsubfp v22,v24,v20"
+func_check "vsubsbs v10,v22,v13"
+func_check "vsubshs v24,v17,v28"
+func_check "vsubsws v10,v26,v0"
+func_check "vsububm v16,v11,v24"
+func_check "vsububs v11,v21,v1"
+func_check "vsubuhm v6,v12,v24"
+func_check "vsubuhs v30,v11,v9"
+func_check "vsubuwm v19,v20,v13"
+func_check "vsubuws v18,v25,v6"
+func_check "vsum2sws v25,v10,v18"
+func_check "vsum4sbs v13,v16,v21"
+func_check "vsum4shs v23,v8,v4"
+func_check "vsum4ubs v28,v13,v30"
+func_check "vsumsws v22,v10,v8"
+func_check "vupkhpx v24,v14"
+func_check "vupkhsb v2,v22"
+func_check "vupkhsh v16,v2"
+func_check "vupklpx v10,v26"
+func_check "vupklsb v15,v28"
+func_check "vupklsh v8,v8"
+func_check "vxor v25,v0,v3"
diff --git a/gdb/testsuite/gdb.arch/powerpc-altivec.s b/gdb/testsuite/gdb.arch/powerpc-altivec.s
new file mode 100644
index 0000000..4148002
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-altivec.s
@@ -0,0 +1,217 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2014-2017 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+ .text
+ .globl func
+func:
+ .long 0x7c60066c /* dss 3 */
+ .long 0x7e00066c /* dssall */
+ .long 0x7c2522ac /* dst r5,r4,1 */
+ .long 0x7e083aac /* dstt r8,r7,0 */
+ .long 0x7c6532ec /* dstst r5,r6,3 */
+ .long 0x7e442aec /* dststt r4,r5,2 */
+ .long 0x7fd6c00e /* lvebx v30,r22,r24 */
+ .long 0x7ea0c00e /* lvebx v21,0,r24 */
+ .long 0x7d50104e /* lvehx v10,r16,r2 */
+ .long 0x7e80b84e /* lvehx v20,0,r23 */
+ .long 0x7e24908e /* lvewx v17,r4,r18 */
+ .long 0x7ee0408e /* lvewx v23,0,r8 */
+ .long 0x7cc0c80c /* lvsl v6,0,r25 */
+ .long 0x7c40300c /* lvsl v2,0,r6 */
+ .long 0x7ed0604c /* lvsr v22,r16,r12 */
+ .long 0x7c00e84c /* lvsr v0,0,r29 */
+ .long 0x7de56ace /* lvxl v15,r5,r13 */
+ .long 0x7e60bace /* lvxl v19,0,r23 */
+ .long 0x7ec110ce /* lvx v22,r1,r2 */
+ .long 0x7e4088ce /* lvx v18,0,r17 */
+ .long 0x7fe042a6 /* mfvrsave r31 */
+ .long 0x13000604 /* mfvscr v24 */
+ .long 0x7d4043a6 /* mtvrsave r10 */
+ .long 0x1000ce44 /* mtvscr v25 */
+ .long 0x7e5b510e /* stvebx v18,r27,r10 */
+ .long 0x7e00310e /* stvebx v16,0,r6 */
+ .long 0x7e2d814e /* stvehx v17,r13,r16 */
+ .long 0x7ee0a14e /* stvehx v23,0,r20 */
+ .long 0x7d73f98e /* stvewx v11,r19,r31 */
+ .long 0x7fe0098e /* stvewx v31,0,r1 */
+ .long 0x7f558bce /* stvxl v26,r21,r17 */
+ .long 0x7da0b3ce /* stvxl v13,0,r22 */
+ .long 0x7d7ff9ce /* stvx v11,r31,r31 */
+ .long 0x7fc081ce /* stvx v30,0,r16 */
+ .long 0x1307e180 /* vaddcuw v24,v7,v28 */
+ .long 0x107e580a /* vaddfp v3,v30,v11 */
+ .long 0x111c4b00 /* vaddsbs v8,v28,v9 */
+ .long 0x10e52340 /* vaddshs v7,v5,v4 */
+ .long 0x12dadb80 /* vaddsws v22,v26,v27 */
+ .long 0x120ee000 /* vaddubm v16,v14,v28 */
+ .long 0x10c1ca00 /* vaddubs v6,v1,v25 */
+ .long 0x10443040 /* vadduhm v2,v4,v6 */
+ .long 0x13554240 /* vadduhs v26,v21,v8 */
+ .long 0x13bf0880 /* vadduwm v29,v31,v1 */
+ .long 0x12ed2280 /* vadduws v23,v13,v4 */
+ .long 0x13d04c44 /* vandc v30,v16,v9 */
+ .long 0x106ddc04 /* vand v3,v13,v27 */
+ .long 0x10868d02 /* vavgsb v4,v6,v17 */
+ .long 0x12fc9d42 /* vavgsh v23,v28,v19 */
+ .long 0x110ffd82 /* vavgsw v8,v15,v31 */
+ .long 0x10c7cc02 /* vavgub v6,v7,v25 */
+ .long 0x13365442 /* vavguh v25,v22,v10 */
+ .long 0x1077ec82 /* vavguw v3,v23,v29 */
+ .long 0x11c613ca /* vctsxs v14,v2,6 */
+ .long 0x1134fb8a /* vctuxs v9,v31,20 */
+ .long 0x1303f34a /* vcfsx v24,v30,3 */
+ .long 0x123dab0a /* vcfux v17,v21,29 */
+ .long 0x125c03c6 /* vcmpbfp v18,v28,v0 */
+ .long 0x127a1fc6 /* vcmpbfp. v19,v26,v3 */
+ .long 0x120258c6 /* vcmpeqfp v16,v2,v11 */
+ .long 0x12ed6cc6 /* vcmpeqfp. v23,v13,v13 */
+ .long 0x13335006 /* vcmpequb v25,v19,v10 */
+ .long 0x124b1406 /* vcmpequb. v18,v11,v2 */
+ .long 0x11393846 /* vcmpequh v9,v25,v7 */
+ .long 0x11d8ac46 /* vcmpequh. v14,v24,v21 */
+ .long 0x130c2886 /* vcmpequw v24,v12,v5 */
+ .long 0x12700c86 /* vcmpequw. v19,v16,v1 */
+ .long 0x12f181c6 /* vcmpgefp v23,v17,v16 */
+ .long 0x127d8dc6 /* vcmpgefp. v19,v29,v17 */
+ .long 0x121c6ac6 /* vcmpgtfp v16,v28,v13 */
+ .long 0x11d83ec6 /* vcmpgtfp. v14,v24,v7 */
+ .long 0x12163306 /* vcmpgtsb v16,v22,v6 */
+ .long 0x104c7706 /* vcmpgtsb. v2,v12,v14 */
+ .long 0x1383eb46 /* vcmpgtsh v28,v3,v29 */
+ .long 0x12136f46 /* vcmpgtsh. v16,v19,v13 */
+ .long 0x11e02b86 /* vcmpgtsw v15,v0,v5 */
+ .long 0x12ad0786 /* vcmpgtsw. v21,v13,v0 */
+ .long 0x10aaf206 /* vcmpgtub v5,v10,v30 */
+ .long 0x10ed5606 /* vcmpgtub. v7,v13,v10 */
+ .long 0x130f8246 /* vcmpgtuh v24,v15,v16 */
+ .long 0x1335de46 /* vcmpgtuh. v25,v21,v27 */
+ .long 0x123b3286 /* vcmpgtuw v17,v27,v6 */
+ .long 0x1115de86 /* vcmpgtuw. v8,v21,v27 */
+ .long 0x102e0b4a /* vcfsx v1,v1,14 */
+ .long 0x10997bca /* vctsxs v4,v15,25 */
+ .long 0x138ebb8a /* vctuxs v28,v23,14 */
+ .long 0x10c0330a /* vcfux v6,v6,0 */
+ .long 0x1000418a /* vexptefp v0,v8 */
+ .long 0x12c0d9ca /* vlogefp v22,v27 */
+ .long 0x12f2916e /* vmaddfp v23,v18,v5,v18 */
+ .long 0x11addc0a /* vmaxfp v13,v13,v27 */
+ .long 0x11177102 /* vmaxsb v8,v23,v14 */
+ .long 0x12710142 /* vmaxsh v19,v17,v0 */
+ .long 0x1263b182 /* vmaxsw v19,v3,v22 */
+ .long 0x12fee002 /* vmaxub v23,v30,v28 */
+ .long 0x1134b842 /* vmaxuh v9,v20,v23 */
+ .long 0x12b30882 /* vmaxuw v21,v19,v1 */
+ .long 0x12cd2da0 /* vmhaddshs v22,v13,v5,v22 */
+ .long 0x13e01ca1 /* vmhraddshs v31,v0,v3,v18 */
+ .long 0x1055c44a /* vminfp v2,v21,v24 */
+ .long 0x12865302 /* vminsb v20,v6,v10 */
+ .long 0x125bd342 /* vminsh v18,v27,v26 */
+ .long 0x10640b82 /* vminsw v3,v4,v1 */
+ .long 0x10e06a02 /* vminub v7,v0,v13 */
+ .long 0x100c3242 /* vminuh v0,v12,v6 */
+ .long 0x10c30a82 /* vminuw v6,v3,v1 */
+ .long 0x107d1ea2 /* vmladduhm v3,v29,v3,v26 */
+ .long 0x12a5f80c /* vmrghb v21,v5,v31 */
+ .long 0x12b8004c /* vmrghh v21,v24,v0 */
+ .long 0x1200b08c /* vmrghw v16,v0,v22 */
+ .long 0x1031810c /* vmrglb v1,v17,v16 */
+ .long 0x11c8794c /* vmrglh v14,v8,v15 */
+ .long 0x13f5298c /* vmrglw v31,v21,v5 */
+ .long 0x13094c84 /* vmr v24,v9 */
+ .long 0x13094c84 /* vmr v24,v9 */
+ .long 0x10187de5 /* vmsummbm v0,v24,v15,v23 */
+ .long 0x10243e68 /* vmsumshm v1,v4,v7,v25 */
+ .long 0x11286fe9 /* vmsumshs v9,v8,v13,v31 */
+ .long 0x12ff67a4 /* vmsumubm v23,v31,v12,v30 */
+ .long 0x13a0d566 /* vmsumuhm v29,v0,v26,v21 */
+ .long 0x136ec967 /* vmsumuhs v27,v14,v25,v5 */
+ .long 0x11597308 /* vmulesb v10,v25,v14 */
+ .long 0x10324348 /* vmulesh v1,v18,v8 */
+ .long 0x122e4a08 /* vmuleub v17,v14,v9 */
+ .long 0x10ba4a48 /* vmuleuh v5,v26,v9 */
+ .long 0x12b23108 /* vmulosb v21,v18,v6 */
+ .long 0x10854148 /* vmulosh v4,v5,v8 */
+ .long 0x10499808 /* vmuloub v2,v9,v19 */
+ .long 0x13a52048 /* vmulouh v29,v5,v4 */
+ .long 0x110229af /* vnmsubfp v8,v2,v6,v5 */
+ .long 0x13e95504 /* vnor v31,v9,v10 */
+ .long 0x133ffd04 /* vnot v25,v31 */
+ .long 0x133ffd04 /* vnot v25,v31 */
+ .long 0x12e71484 /* vor v23,v7,v2 */
+ .long 0x101cb66b /* vperm v0,v28,v22,v25 */
+ .long 0x12198b0e /* vpkpx v16,v25,v17 */
+ .long 0x1190898e /* vpkshss v12,v16,v17 */
+ .long 0x1033b90e /* vpkshus v1,v19,v23 */
+ .long 0x132769ce /* vpkswss v25,v7,v13 */
+ .long 0x1098514e /* vpkswus v4,v24,v10 */
+ .long 0x113b600e /* vpkuhum v9,v27,v12 */
+ .long 0x12cac88e /* vpkuhus v22,v10,v25 */
+ .long 0x13d2004e /* vpkuwum v30,v18,v0 */
+ .long 0x10e3b0ce /* vpkuwus v7,v3,v22 */
+ .long 0x1300e10a /* vrefp v24,v28 */
+ .long 0x12209aca /* vrfim v17,v19 */
+ .long 0x1300ca0a /* vrfin v24,v25 */
+ .long 0x10602a8a /* vrfip v3,v5 */
+ .long 0x1100524a /* vrfiz v8,v10 */
+ .long 0x1352f004 /* vrlb v26,v18,v30 */
+ .long 0x1211c844 /* vrlh v16,v17,v25 */
+ .long 0x12fe4884 /* vrlw v23,v30,v9 */
+ .long 0x1040914a /* vrsqrtefp v2,v18 */
+ .long 0x128e92aa /* vsel v20,v14,v18,v10 */
+ .long 0x13396104 /* vslb v25,v25,v12 */
+ .long 0x112961ec /* vsldoi v9,v9,v12,7 */
+ .long 0x11c25944 /* vslh v14,v2,v11 */
+ .long 0x13c5340c /* vslo v30,v5,v6 */
+ .long 0x12de49c4 /* vsl v22,v30,v9 */
+ .long 0x135a1984 /* vslw v26,v26,v3 */
+ .long 0x1026a20c /* vspltb v1,v20,6 */
+ .long 0x1203924c /* vsplth v16,v18,3 */
+ .long 0x1333030c /* vspltisb v25,-13 */
+ .long 0x12ca034c /* vspltish v22,10 */
+ .long 0x11ad038c /* vspltisw v13,13 */
+ .long 0x1122928c /* vspltw v9,v18,2 */
+ .long 0x11d60304 /* vsrab v14,v22,v0 */
+ .long 0x118c9344 /* vsrah v12,v12,v18 */
+ .long 0x10426b84 /* vsraw v2,v2,v13 */
+ .long 0x10fb2a04 /* vsrb v7,v27,v5 */
+ .long 0x10ebea44 /* vsrh v7,v11,v29 */
+ .long 0x125efc4c /* vsro v18,v30,v31 */
+ .long 0x1049e2c4 /* vsr v2,v9,v28 */
+ .long 0x10190284 /* vsrw v0,v25,v0 */
+ .long 0x13025580 /* vsubcuw v24,v2,v10 */
+ .long 0x12d8a04a /* vsubfp v22,v24,v20 */
+ .long 0x11566f00 /* vsubsbs v10,v22,v13 */
+ .long 0x1311e740 /* vsubshs v24,v17,v28 */
+ .long 0x115a0780 /* vsubsws v10,v26,v0 */
+ .long 0x120bc400 /* vsububm v16,v11,v24 */
+ .long 0x11750e00 /* vsububs v11,v21,v1 */
+ .long 0x10ccc440 /* vsubuhm v6,v12,v24 */
+ .long 0x13cb4e40 /* vsubuhs v30,v11,v9 */
+ .long 0x12746c80 /* vsubuwm v19,v20,v13 */
+ .long 0x12593680 /* vsubuws v18,v25,v6 */
+ .long 0x132a9688 /* vsum2sws v25,v10,v18 */
+ .long 0x11b0af08 /* vsum4sbs v13,v16,v21 */
+ .long 0x12e82648 /* vsum4shs v23,v8,v4 */
+ .long 0x138df608 /* vsum4ubs v28,v13,v30 */
+ .long 0x12ca4788 /* vsumsws v22,v10,v8 */
+ .long 0x1300734e /* vupkhpx v24,v14 */
+ .long 0x1040b20e /* vupkhsb v2,v22 */
+ .long 0x1200124e /* vupkhsh v16,v2 */
+ .long 0x1140d3ce /* vupklpx v10,v26 */
+ .long 0x11e0e28e /* vupklsb v15,v28 */
+ .long 0x110042ce /* vupklsh v8,v8 */
+ .long 0x13201cc4 /* vxor v25,v0,v3 */
diff --git a/gdb/testsuite/gdb.arch/powerpc-altivec2.exp b/gdb/testsuite/gdb.arch/powerpc-altivec2.exp
new file mode 100644
index 0000000..70f4ccb
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-altivec2.exp
@@ -0,0 +1,178 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# Test PowerPC instructions disassembly.
+
+standard_testfile .s
+set objfile [standard_output_file ${testfile}.o]
+
+if {![istarget "powerpc*-*-*"]} then {
+ verbose "Skipping PowerPC instructions disassembly."
+ return
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC instructions disassembly"
+ return -1
+}
+
+clean_restart ${objfile}
+
+# Disassemble the function.
+set func ""
+
+gdb_test "set disassembler-options altivec"
+set test "disass func"
+gdb_test_multiple $test $test {
+ -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
+ set func $expect_out(1,string)
+ pass $test
+ }
+}
+
+proc instr_to_patt {instr} {
+ global decimal hex
+ # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
+ return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]"
+}
+
+proc func_check {instr} {
+ global func
+
+ set test "found: $instr"
+ if [regexp -nocase -line [instr_to_patt $instr] $func] {
+ pass $test
+ } else {
+ fail $test
+ }
+}
+
+func_check "lvepxl v3,0,r28"
+func_check "lvepxl v19,r4,r18"
+func_check "lvepx v27,0,r19"
+func_check "lvepx v1,r25,r18"
+func_check "lvexbx v31,0,r27"
+func_check "lvexbx v28,r1,r12"
+func_check "lvexhx v31,0,r14"
+func_check "lvexhx v17,r16,r31"
+func_check "lvexwx v22,0,r29"
+func_check "lvexwx v23,r25,r5"
+func_check "lvsm v3,0,r12"
+func_check "lvsm v27,r29,r1"
+func_check "lvswxl v7,0,r6"
+func_check "lvswxl v7,r16,r8"
+func_check "lvswx v14,0,r18"
+func_check "lvswx v28,r28,r16"
+func_check "lvtlxl v27,0,r12"
+func_check "lvtlxl v27,r28,r0"
+func_check "lvtlx v23,0,r25"
+func_check "lvtlx v1,r25,r14"
+func_check "lvtrxl v20,0,r24"
+func_check "lvtrxl v22,r29,r24"
+func_check "lvtrx v24,0,r8"
+func_check "lvtrx v13,r23,r28"
+func_check "mvidsplt v12,r28,r12"
+func_check "mviwsplt v10,r27,r0"
+func_check "stvepxl v27,0,r13"
+func_check "stvepxl v2,r2,r31"
+func_check "stvepx v3,0,r10"
+func_check "stvepx v27,r28,r0"
+func_check "stvexbx v13,0,r6"
+func_check "stvexbx v13,r25,r3"
+func_check "stvexhx v22,0,r1"
+func_check "stvexhx v17,r14,r10"
+func_check "stvexwx v21,0,r27"
+func_check "stvexwx v31,r18,r1"
+func_check "stvflxl v26,0,r13"
+func_check "stvflxl v22,r13,r21"
+func_check "stvflx v5,0,r9"
+func_check "stvflx v21,r24,r1"
+func_check "stvfrxl v13,0,r10"
+func_check "stvfrxl v13,r17,r25"
+func_check "stvfrx v17,0,r10"
+func_check "stvfrx v8,r12,r31"
+func_check "stvswxl v18,0,r29"
+func_check "stvswxl v26,r14,r8"
+func_check "stvswx v0,0,r15"
+func_check "stvswx v13,r23,r7"
+func_check "vabsdub v6,v17,v16"
+func_check "vabsduh v21,v18,v4"
+func_check "vabsduw v25,v20,v9"
+func_check "vpermxor v6,v17,v20,v26"
+func_check "vaddeuqm v29,v26,v15,v28"
+func_check "vaddecuq v15,v8,v7,v24"
+func_check "vsubeuqm v2,v6,v21,v1"
+func_check "vsubecuq v29,v6,v0,v4"
+func_check "vmulouw v14,v9,v3"
+func_check "vmuluwm v24,v16,v18"
+func_check "vaddudm v10,v17,v17"
+func_check "vmaxud v30,v25,v4"
+func_check "vrld v10,v6,v28"
+func_check "vcmpequd v27,v7,v7"
+func_check "vadduqm v22,v16,v25"
+func_check "vaddcuq v1,v21,v29"
+func_check "vmulosw v20,v11,v19"
+func_check "vmaxsd v24,v19,v1"
+func_check "vmuleuw v13,v27,v30"
+func_check "vminud v9,v24,v17"
+func_check "vcmpgtud v10,v18,v28"
+func_check "vmulesw v0,v29,v22"
+func_check "vminsd v13,v28,v1"
+func_check "vsrad v10,v20,v5"
+func_check "vcmpgtsd v27,v21,v5"
+func_check "bcdadd. v0,v23,v30,1"
+func_check "vpmsumb v25,v24,v26"
+func_check "bcdsub. v8,v4,v4,1"
+func_check "vpmsumh v16,v14,v26"
+func_check "vpkudum v27,v2,v26"
+func_check "vpmsumw v6,v23,v17"
+func_check "vpmsumd v20,v6,v25"
+func_check "vpkudus v27,v22,v16"
+func_check "vsubudm v21,v20,v18"
+func_check "vsubuqm v21,v20,v18"
+func_check "vcipher v29,v29,v6"
+func_check "vcipherlast v2,v13,v20"
+func_check "vgbbd v20,v18"
+func_check "vsubcuq v19,v8,v25"
+func_check "vorc v9,v26,v29"
+func_check "vncipher v20,v20,v13"
+func_check "vncipherlast v15,v5,v27"
+func_check "vbpermq v3,v19,v6"
+func_check "vpksdus v30,v4,v28"
+func_check "vnand v0,v4,v14"
+func_check "vsld v17,v8,v29"
+func_check "vsbox v29,v20"
+func_check "vpksdss v11,v7,v11"
+func_check "vcmpequd. v3,v19,v16"
+func_check "vupkhsw v18,v17"
+func_check "vshasigmaw v29,v8,0,13"
+func_check "veqv v23,v28,v26"
+func_check "vmrgew v29,v0,v2"
+func_check "vmrgow v29,v0,v2"
+func_check "vshasigmad v27,v19,0,0"
+func_check "vsrd v20,v28,v28"
+func_check "vupklsw v18,v21"
+func_check "vclzb v30,v7"
+func_check "vpopcntb v29,v21"
+func_check "vclzh v25,v21"
+func_check "vpopcnth v16,v30"
+func_check "vclzw v28,v3"
+func_check "vpopcntw v10,v9"
+func_check "vclzd v22,v9"
+func_check "vpopcntd v15,v30"
+func_check "vcmpgtud. v2,v31,v6"
+func_check "vcmpgtsd. v20,v15,v2"
diff --git a/gdb/testsuite/gdb.arch/powerpc-altivec2.s b/gdb/testsuite/gdb.arch/powerpc-altivec2.s
new file mode 100644
index 0000000..6148fb9
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-altivec2.s
@@ -0,0 +1,135 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2014-2017 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+ .text
+ .globl func
+func:
+ .long 0x7c60e20e /* lvepxl v3,0,r28 */
+ .long 0x7e64920e /* lvepxl v19,r4,r18 */
+ .long 0x7f609a4e /* lvepx v27,0,r19 */
+ .long 0x7c39924e /* lvepx v1,r25,r18 */
+ .long 0x7fe0da0a /* lvexbx v31,0,r27 */
+ .long 0x7f81620a /* lvexbx v28,r1,r12 */
+ .long 0x7fe0724a /* lvexhx v31,0,r14 */
+ .long 0x7e30fa4a /* lvexhx v17,r16,r31 */
+ .long 0x7ec0ea8a /* lvexwx v22,0,r29 */
+ .long 0x7ef92a8a /* lvexwx v23,r25,r5 */
+ .long 0x7c60660a /* lvsm v3,0,r12 */
+ .long 0x7f7d0e0a /* lvsm v27,r29,r1 */
+ .long 0x7ce036ca /* lvswxl v7,0,r6 */
+ .long 0x7cf046ca /* lvswxl v7,r16,r8 */
+ .long 0x7dc094ca /* lvswx v14,0,r18 */
+ .long 0x7f9c84ca /* lvswx v28,r28,r16 */
+ .long 0x7f60668a /* lvtlxl v27,0,r12 */
+ .long 0x7f7c068a /* lvtlxl v27,r28,r0 */
+ .long 0x7ee0cc8a /* lvtlx v23,0,r25 */
+ .long 0x7c39748a /* lvtlx v1,r25,r14 */
+ .long 0x7e80c64a /* lvtrxl v20,0,r24 */
+ .long 0x7eddc64a /* lvtrxl v22,r29,r24 */
+ .long 0x7f00444a /* lvtrx v24,0,r8 */
+ .long 0x7db7e44a /* lvtrx v13,r23,r28 */
+ .long 0x7d9c60dc /* mvidsplt v12,r28,r12 */
+ .long 0x7d5b005c /* mviwsplt v10,r27,r0 */
+ .long 0x7f606e0e /* stvepxl v27,0,r13 */
+ .long 0x7c42fe0e /* stvepxl v2,r2,r31 */
+ .long 0x7c60564e /* stvepx v3,0,r10 */
+ .long 0x7f7c064e /* stvepx v27,r28,r0 */
+ .long 0x7da0330a /* stvexbx v13,0,r6 */
+ .long 0x7db91b0a /* stvexbx v13,r25,r3 */
+ .long 0x7ec00b4a /* stvexhx v22,0,r1 */
+ .long 0x7e2e534a /* stvexhx v17,r14,r10 */
+ .long 0x7ea0db8a /* stvexwx v21,0,r27 */
+ .long 0x7ff20b8a /* stvexwx v31,r18,r1 */
+ .long 0x7f406f8a /* stvflxl v26,0,r13 */
+ .long 0x7ecdaf8a /* stvflxl v22,r13,r21 */
+ .long 0x7ca04d8a /* stvflx v5,0,r9 */
+ .long 0x7eb80d8a /* stvflx v21,r24,r1 */
+ .long 0x7da0574a /* stvfrxl v13,0,r10 */
+ .long 0x7db1cf4a /* stvfrxl v13,r17,r25 */
+ .long 0x7e20554a /* stvfrx v17,0,r10 */
+ .long 0x7d0cfd4a /* stvfrx v8,r12,r31 */
+ .long 0x7e40efca /* stvswxl v18,0,r29 */
+ .long 0x7f4e47ca /* stvswxl v26,r14,r8 */
+ .long 0x7c007dca /* stvswx v0,0,r15 */
+ .long 0x7db73dca /* stvswx v13,r23,r7 */
+ .long 0x10d18403 /* vabsdub v6,v17,v16 */
+ .long 0x12b22443 /* vabsduh v21,v18,v4 */
+ .long 0x13344c83 /* vabsduw v25,v20,v9 */
+ .long 0x10d1a6ad /* vpermxor v6,v17,v20,v26 */
+ .long 0x13ba7f3c /* vaddeuqm v29,v26,v15,v28 */
+ .long 0x11e83e3d /* vaddecuq v15,v8,v7,v24 */
+ .long 0x1046a87e /* vsubeuqm v2,v6,v21,v1 */
+ .long 0x13a6013f /* vsubecuq v29,v6,v0,v4 */
+ .long 0x11c91888 /* vmulouw v14,v9,v3 */
+ .long 0x13109089 /* vmuluwm v24,v16,v18 */
+ .long 0x115188c0 /* vaddudm v10,v17,v17 */
+ .long 0x13d920c2 /* vmaxud v30,v25,v4 */
+ .long 0x1146e0c4 /* vrld v10,v6,v28 */
+ .long 0x136738c7 /* vcmpequd v27,v7,v7 */
+ .long 0x12d0c900 /* vadduqm v22,v16,v25 */
+ .long 0x1035e940 /* vaddcuq v1,v21,v29 */
+ .long 0x128b9988 /* vmulosw v20,v11,v19 */
+ .long 0x131309c2 /* vmaxsd v24,v19,v1 */
+ .long 0x11bbf288 /* vmuleuw v13,v27,v30 */
+ .long 0x11388ac2 /* vminud v9,v24,v17 */
+ .long 0x1152e2c7 /* vcmpgtud v10,v18,v28 */
+ .long 0x101db388 /* vmulesw v0,v29,v22 */
+ .long 0x11bc0bc2 /* vminsd v13,v28,v1 */
+ .long 0x11542bc4 /* vsrad v10,v20,v5 */
+ .long 0x13752bc7 /* vcmpgtsd v27,v21,v5 */
+ .long 0x1017f601 /* bcdadd. v0,v23,v30,1 */
+ .long 0x1338d408 /* vpmsumb v25,v24,v26 */
+ .long 0x11042641 /* bcdsub. v8,v4,v4,1 */
+ .long 0x120ed448 /* vpmsumh v16,v14,v26 */
+ .long 0x1362d44e /* vpkudum v27,v2,v26 */
+ .long 0x10d78c88 /* vpmsumw v6,v23,v17 */
+ .long 0x1286ccc8 /* vpmsumd v20,v6,v25 */
+ .long 0x137684ce /* vpkudus v27,v22,v16 */
+ .long 0x12b494c0 /* vsubudm v21,v20,v18 */
+ .long 0x12b49500 /* vsubuqm v21,v20,v18 */
+ .long 0x13bd3508 /* vcipher v29,v29,v6 */
+ .long 0x104da509 /* vcipherlast v2,v13,v20 */
+ .long 0x1280950c /* vgbbd v20,v18 */
+ .long 0x1268cd40 /* vsubcuq v19,v8,v25 */
+ .long 0x113aed44 /* vorc v9,v26,v29 */
+ .long 0x12946d48 /* vncipher v20,v20,v13 */
+ .long 0x11e5dd49 /* vncipherlast v15,v5,v27 */
+ .long 0x1073354c /* vbpermq v3,v19,v6 */
+ .long 0x13c4e54e /* vpksdus v30,v4,v28 */
+ .long 0x10047584 /* vnand v0,v4,v14 */
+ .long 0x1228edc4 /* vsld v17,v8,v29 */
+ .long 0x13b405c8 /* vsbox v29,v20 */
+ .long 0x11675dce /* vpksdss v11,v7,v11 */
+ .long 0x107384c7 /* vcmpequd. v3,v19,v16 */
+ .long 0x12408e4e /* vupkhsw v18,v17 */
+ .long 0x13a86e82 /* vshasigmaw v29,v8,0,13 */
+ .long 0x12fcd684 /* veqv v23,v28,v26 */
+ .long 0x13a0178c /* vmrgew v29,v0,v2 */
+ .long 0x13a0168c /* vmrgow v29,v0,v2 */
+ .long 0x137306c2 /* vshasigmad v27,v19,0,0 */
+ .long 0x129ce6c4 /* vsrd v20,v28,v28 */
+ .long 0x1240aece /* vupklsw v18,v21 */
+ .long 0x13c03f02 /* vclzb v30,v7 */
+ .long 0x13a0af03 /* vpopcntb v29,v21 */
+ .long 0x1320af42 /* vclzh v25,v21 */
+ .long 0x1200f743 /* vpopcnth v16,v30 */
+ .long 0x13801f82 /* vclzw v28,v3 */
+ .long 0x11404f83 /* vpopcntw v10,v9 */
+ .long 0x12c04fc2 /* vclzd v22,v9 */
+ .long 0x11e0f7c3 /* vpopcntd v15,v30 */
+ .long 0x105f36c7 /* vcmpgtud. v2,v31,v6 */
+ .long 0x128f17c7 /* vcmpgtsd. v20,v15,v2 */
diff --git a/gdb/testsuite/gdb.arch/powerpc-altivec3.exp b/gdb/testsuite/gdb.arch/powerpc-altivec3.exp
new file mode 100644
index 0000000..b928e1b
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-altivec3.exp
@@ -0,0 +1,131 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# Test PowerPC instructions disassembly.
+
+standard_testfile .s
+set objfile [standard_output_file ${testfile}.o]
+
+if {![istarget "powerpc*-*-*"]} then {
+ verbose "Skipping PowerPC instructions disassembly."
+ return
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC instructions disassembly"
+ return -1
+}
+
+clean_restart ${objfile}
+
+# Disassemble the function.
+set func ""
+
+gdb_test "set disassembler-options altivec"
+set test "disass func"
+gdb_test_multiple $test $test {
+ -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
+ set func $expect_out(1,string)
+ pass $test
+ }
+}
+
+proc instr_to_patt {instr} {
+ global decimal hex
+ # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
+ return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]"
+}
+
+proc func_check {instr} {
+ global func
+
+ set test "found: $instr"
+ if [regexp -nocase -line [instr_to_patt $instr] $func] {
+ pass $test
+ } else {
+ fail $test
+ }
+}
+
+func_check "vmul10cuq v11,v30"
+func_check "vcmpneb v30,v1,v23"
+func_check "vpermr v30,v19,v30,v29"
+func_check "vmul10ecuq v20,v20,v17"
+func_check "vcmpneh v27,v19,v31"
+func_check "vrlwmi v6,v9,v23"
+func_check "vcmpnew v22,v26,v1"
+func_check "vrldmi v24,v30,v25"
+func_check "vcmpnezb v19,v29,v22"
+func_check "vcmpnezh v8,v23,v19"
+func_check "vrlwnm v27,v24,v11"
+func_check "vcmpnezw v21,v13,v10"
+func_check "vrldnm v5,v20,v29"
+func_check "vmul10uq v30,v19"
+func_check "vextractub v24,v21,12"
+func_check "vmul10euq v0,v19,v28"
+func_check "vextractuh v10,v3,12"
+func_check "vextractuw v28,v12,7"
+func_check "vextractd v30,v27,1"
+func_check "vinsertb v25,v31,4"
+func_check "bcdcpsgn. v21,v14,v30"
+func_check "vinserth v22,v18,5"
+func_check "vinsertw v29,v22,1"
+func_check "vinsertd v29,v13,7"
+func_check "vcmpneb. v22,v25,v8"
+func_check "vcmpneh. v16,v15,v21"
+func_check "bcdus. v22,v21,v31"
+func_check "vcmpnew. v1,v12,v12"
+func_check "bcds. v5,v3,v8,1"
+func_check "bcdtrunc. v27,v22,v1,0"
+func_check "vcmpnezb. v2,v26,v0"
+func_check "bcdutrunc. v26,v14,v7"
+func_check "vcmpnezh. v16,v5,v12"
+func_check "bcdctsq. v24,v5"
+func_check "bcdcfsq. v7,v0,0"
+func_check "bcdctz. v30,v12,1"
+func_check "bcdctn. v17,v23"
+func_check "bcdcfz. v4,v15,1"
+func_check "bcdcfn. v29,v5,1"
+func_check "bcdsetsgn. v27,v12,0"
+func_check "vcmpnezw. v14,v28,v25"
+func_check "bcdsr. v2,v2,v6,1"
+func_check "vbpermd v25,v0,v5"
+func_check "vclzlsbb r28,v25"
+func_check "vctzlsbb r2,v24"
+func_check "vnegw v21,v11"
+func_check "vnegd v17,v27"
+func_check "vprtybw v31,v23"
+func_check "vprtybd v21,v23"
+func_check "vprtybq v21,v18"
+func_check "vextsb2w v30,v4"
+func_check "vextsh2w v3,v26"
+func_check "vextsb2d v11,v17"
+func_check "vextsh2d v5,v10"
+func_check "vextsw2d v13,v25"
+func_check "vctzb v25,v2"
+func_check "vctzh v0,v3"
+func_check "vctzw v22,v6"
+func_check "vctzd v26,v24"
+func_check "vextublx r6,r31,v2"
+func_check "vextuhlx r13,r0,v18"
+func_check "vextuwlx r14,r30,v31"
+func_check "vsrv v15,v12,v14"
+func_check "vextubrx r20,r10,v30"
+func_check "vslv v21,v21,v2"
+func_check "vextuhrx r15,r9,v1"
+func_check "vextuwrx r21,r17,v16"
+func_check "vmsumudm v20,v21,v22,v23"
diff --git a/gdb/testsuite/gdb.arch/powerpc-altivec3.s b/gdb/testsuite/gdb.arch/powerpc-altivec3.s
new file mode 100644
index 0000000..9e33325
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-altivec3.s
@@ -0,0 +1,88 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2014-2017 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+ .text
+ .globl func
+func:
+ .long 0x117e0001 /* vmul10cuq v11,v30 */
+ .long 0x13c1b807 /* vcmpneb v30,v1,v23 */
+ .long 0x13d3f77b /* vpermr v30,v19,v30,v29 */
+ .long 0x12948841 /* vmul10ecuq v20,v20,v17 */
+ .long 0x1373f847 /* vcmpneh v27,v19,v31 */
+ .long 0x10c9b885 /* vrlwmi v6,v9,v23 */
+ .long 0x12da0887 /* vcmpnew v22,v26,v1 */
+ .long 0x131ec8c5 /* vrldmi v24,v30,v25 */
+ .long 0x127db107 /* vcmpnezb v19,v29,v22 */
+ .long 0x11179947 /* vcmpnezh v8,v23,v19 */
+ .long 0x13785985 /* vrlwnm v27,v24,v11 */
+ .long 0x12ad5187 /* vcmpnezw v21,v13,v10 */
+ .long 0x10b4e9c5 /* vrldnm v5,v20,v29 */
+ .long 0x13d30201 /* vmul10uq v30,v19 */
+ .long 0x130caa0d /* vextractub v24,v21,12 */
+ .long 0x1013e241 /* vmul10euq v0,v19,v28 */
+ .long 0x114c1a4d /* vextractuh v10,v3,12 */
+ .long 0x1387628d /* vextractuw v28,v12,7 */
+ .long 0x13c1dacd /* vextractd v30,v27,1 */
+ .long 0x1324fb0d /* vinsertb v25,v31,4 */
+ .long 0x12aef341 /* bcdcpsgn. v21,v14,v30 */
+ .long 0x12c5934d /* vinserth v22,v18,5 */
+ .long 0x13a1b38d /* vinsertw v29,v22,1 */
+ .long 0x13a76bcd /* vinsertd v29,v13,7 */
+ .long 0x12d94407 /* vcmpneb. v22,v25,v8 */
+ .long 0x120fac47 /* vcmpneh. v16,v15,v21 */
+ .long 0x12d5fc81 /* bcdus. v22,v21,v31 */
+ .long 0x102c6487 /* vcmpnew. v1,v12,v12 */
+ .long 0x10a346c1 /* bcds. v5,v3,v8,1 */
+ .long 0x13760d01 /* bcdtrunc. v27,v22,v1,0 */
+ .long 0x105a0507 /* vcmpnezb. v2,v26,v0 */
+ .long 0x134e3d41 /* bcdutrunc. v26,v14,v7 */
+ .long 0x12056547 /* vcmpnezh. v16,v5,v12 */
+ .long 0x13002d81 /* bcdctsq. v24,v5 */
+ .long 0x10e20581 /* bcdcfsq. v7,v0,0 */
+ .long 0x13c46781 /* bcdctz. v30,v12,1 */
+ .long 0x1225bd81 /* bcdctn. v17,v23 */
+ .long 0x10867f81 /* bcdcfz. v4,v15,1 */
+ .long 0x13a72f81 /* bcdcfn. v29,v5,1 */
+ .long 0x137f6581 /* bcdsetsgn. v27,v12,0 */
+ .long 0x11dccd87 /* vcmpnezw. v14,v28,v25 */
+ .long 0x104237c1 /* bcdsr. v2,v2,v6,1 */
+ .long 0x13202dcc /* vbpermd v25,v0,v5 */
+ .long 0x1380ce02 /* vclzlsbb r28,v25 */
+ .long 0x1041c602 /* vctzlsbb r2,v24 */
+ .long 0x12a65e02 /* vnegw v21,v11 */
+ .long 0x1227de02 /* vnegd v17,v27 */
+ .long 0x13e8be02 /* vprtybw v31,v23 */
+ .long 0x12a9be02 /* vprtybd v21,v23 */
+ .long 0x12aa9602 /* vprtybq v21,v18 */
+ .long 0x13d02602 /* vextsb2w v30,v4 */
+ .long 0x1071d602 /* vextsh2w v3,v26 */
+ .long 0x11788e02 /* vextsb2d v11,v17 */
+ .long 0x10b95602 /* vextsh2d v5,v10 */
+ .long 0x11bace02 /* vextsw2d v13,v25 */
+ .long 0x133c1602 /* vctzb v25,v2 */
+ .long 0x101d1e02 /* vctzh v0,v3 */
+ .long 0x12de3602 /* vctzw v22,v6 */
+ .long 0x135fc602 /* vctzd v26,v24 */
+ .long 0x10df160d /* vextublx r6,r31,v2 */
+ .long 0x11a0964d /* vextuhlx r13,r0,v18 */
+ .long 0x11defe8d /* vextuwlx r14,r30,v31 */
+ .long 0x11ec7704 /* vsrv v15,v12,v14 */
+ .long 0x128af70d /* vextubrx r20,r10,v30 */
+ .long 0x12b51744 /* vslv v21,v21,v2 */
+ .long 0x11e90f4d /* vextuhrx r15,r9,v1 */
+ .long 0x12b1878d /* vextuwrx r21,r17,v16 */
+ .long 0x1295b5e3 /* vmsumudm v20,v21,v22,v23 */
diff --git a/gdb/testsuite/gdb.arch/powerpc-disassembler-options.exp b/gdb/testsuite/gdb.arch/powerpc-disassembler-options.exp
new file mode 100644
index 0000000..80a937d
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-disassembler-options.exp
@@ -0,0 +1,56 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# This test exercises set/show disassembler-options results are preserved
+# across multiple set architecture calls.
+
+if {![istarget "powerpc*-*-*"]} then {
+ verbose "Skipping PowerPC disassembler options."
+ return
+}
+
+gdb_exit
+gdb_start
+
+set option "power9"
+set arch1 "rs6000:6000"
+set arch2 "powerpc:common64"
+
+gdb_test "set architecture $arch1" \
+ "The target architecture is assumed to be $arch1" \
+ "set architecture $arch1"
+
+gdb_test_no_output "set disassembler-options"
+gdb_test "show disassembler-options" \
+ "The current disassembler options are ''.*" \
+ "show NULL disassembler-options"
+
+gdb_test_no_output "set disassembler-options $option"
+gdb_test "show disassembler-options" \
+ "The current disassembler options are '$option'.*" \
+ "show disassembler-options $option"
+
+# Change architectures and verify the disassembler options have been preserved.
+
+gdb_test "set architecture $arch2" \
+ "The target architecture is assumed to be $arch2" \
+ "set architecture $arch2"
+
+gdb_test "show disassembler-options" \
+ "The current disassembler options are '$option'.*" \
+ "show disassembler-options $option"
+
diff --git a/gdb/testsuite/gdb.arch/powerpc-power.exp b/gdb/testsuite/gdb.arch/powerpc-power.exp
deleted file mode 100644
index c1c56c5..0000000
--- a/gdb/testsuite/gdb.arch/powerpc-power.exp
+++ /dev/null
@@ -1,1429 +0,0 @@
-# Copyright 2014-2017 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that 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.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# Test PowerPC instructions disassembly.
-
-standard_testfile .s
-set objfile [standard_output_file ${testfile}.o]
-
-if {![istarget "powerpc*-*-*"]} then {
- verbose "Skipping PowerPC instructions disassembly."
- return
-}
-
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
- untested "PowerPC instructions disassembly"
- return -1
-}
-
-clean_restart ${objfile}
-
-# Disassemble the function.
-
-set test "disass func"
-gdb_test_multiple $test $test {
- -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
- set func $expect_out(1,string)
- pass $test
- }
-}
-
-proc instr_to_patt {offset instr} {
- # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
- return ".*\r\n\[ \t\]*0x\[0-9a-f\]+ <\\$offset>:\[ \t\]*[string map [list { } "\[ \t\]+" . {\.}] $instr]\[ \t\]*\r\n.*"
-}
-
-proc func_check {offset instr} {
- global func
-
- set test "found $offset: $instr"
- if [regexp -nocase -line [instr_to_patt $offset $instr] $func] {
- pass $test
- } else {
- fail $test
- }
-}
-
-
-## power7.d
-func_check +0 "lxvd2x vs3,r4,r5"
-func_check +4 "lxvd2x vs43,r4,r5"
-func_check +8 "stxvd2x vs3,r4,r5"
-func_check +12 "stxvd2x vs43,r4,r5"
-func_check +16 "xxmrghd vs3,vs4,vs5"
-func_check +20 "xxmrghd vs43,vs44,vs45"
-func_check +24 "xxmrgld vs3,vs4,vs5"
-func_check +28 "xxmrgld vs43,vs44,vs45"
-func_check +32 "xxmrghd vs3,vs4,vs5"
-func_check +36 "xxmrghd vs43,vs44,vs45"
-func_check +40 "xxmrgld vs3,vs4,vs5"
-func_check +44 "xxmrgld vs43,vs44,vs45"
-func_check +48 "xxpermdi vs3,vs4,vs5,1"
-func_check +52 "xxpermdi vs43,vs44,vs45,1"
-func_check +56 "xxpermdi vs3,vs4,vs5,2"
-func_check +60 "xxpermdi vs43,vs44,vs45,2"
-func_check +64 "xvmovdp vs3,vs4"
-func_check +68 "xvmovdp vs43,vs44"
-func_check +72 "xvmovdp vs3,vs4"
-func_check +76 "xvmovdp vs43,vs44"
-func_check +80 "xvcpsgndp vs3,vs4,vs5"
-func_check +84 "xvcpsgndp vs43,vs44,vs45"
-func_check +88 "doze"
-func_check +92 "nap"
-func_check +96 "sleep"
-func_check +100 "rvwinkle"
-func_check +104 "prtyw r3,r4"
-func_check +108 "prtyd r13,r14"
-func_check +112 "mfcfar r10"
-func_check +116 "mtcfar r11"
-func_check +120 "cmpb r3,r4,r5"
-func_check +124 "lwzcix r10,r11,r12"
-func_check +128 "dadd f16,f17,f18"
-func_check +132 "daddq f20,f22,f24"
-func_check +136 "dss 3"
-func_check +140 "dssall"
-func_check +144 "dst r5,r4,1"
-func_check +148 "dstt r8,r7,0"
-func_check +152 "dstst r5,r6,3"
-func_check +156 "dststt r4,r5,2"
-func_check +160 "divwe r10,r11,r12"
-func_check +164 "divwe\. r11,r12,r13"
-func_check +168 "divweo r12,r13,r14"
-func_check +172 "divweo\. r13,r14,r15"
-func_check +176 "divweu r10,r11,r12"
-func_check +180 "divweu\. r11,r12,r13"
-func_check +184 "divweuo r12,r13,r14"
-func_check +188 "divweuo\. r13,r14,r15"
-func_check +192 "bpermd r7,r17,r27"
-func_check +196 "popcntw r10,r20"
-func_check +200 "popcntd r10,r20"
-func_check +204 "ldbrx r20,r21,r22"
-func_check +208 "stdbrx r20,r21,r22"
-func_check +212 "lfiwzx f10,0,r10"
-func_check +216 "lfiwzx f10,r9,r10"
-func_check +220 "fcfids f4,f5"
-func_check +224 "fcfids\. f4,f5"
-func_check +228 "fcfidus f4,f5"
-func_check +232 "fcfidus\. f4,f5"
-func_check +236 "fctiwu f4,f5"
-func_check +240 "fctiwu\. f4,f5"
-func_check +244 "fctiwuz f4,f5"
-func_check +248 "fctiwuz\. f4,f5"
-func_check +252 "fctidu f4,f5"
-func_check +256 "fctidu\. f4,f5"
-func_check +260 "fctiduz f4,f5"
-func_check +264 "fctiduz\. f4,f5"
-func_check +268 "fcfidu f4,f5"
-func_check +272 "fcfidu\. f4,f5"
-func_check +276 "ftdiv cr0,f10,f11"
-func_check +280 "ftdiv cr7,f10,f11"
-func_check +284 "ftsqrt cr0,f10"
-func_check +288 "ftsqrt cr7,f10"
-func_check +292 "dcbtt r8,r9"
-func_check +296 "dcbtstt r8,r9"
-func_check +300 "dcffix f10,f12"
-func_check +304 "dcffix\. f20,f22"
-func_check +308 "fre f14,f15"
-func_check +312 "fre\. f14,f15"
-func_check +316 "fres f14,f15"
-func_check +320 "fres\. f14,f15"
-func_check +324 "frsqrte f14,f15"
-func_check +328 "frsqrte\. f14,f15"
-func_check +332 "frsqrtes f14,f15"
-func_check +336 "frsqrtes\. f14,f15"
-func_check +340 "isel r2,r3,r4,28"
-func_check +344 "yield"
-func_check +348 "yield"
-func_check +352 "ori r2,r2,0"
-func_check +356 "nop"
-func_check +360 "nop"
-func_check +364 "ori r2,r2,0"
-func_check +368 "mdoio"
-func_check +372 "mdoio"
-func_check +376 "mdoom"
-func_check +380 "mdoom"
-func_check +384 "mfppr r10"
-func_check +388 "mfppr32 r11"
-func_check +392 "mtppr r12"
-func_check +396 "mtppr32 r13"
-func_check +400 "tlbie r10,r11"
-
-## altivec.d
-func_check +404 "dss 3"
-func_check +408 "dssall"
-func_check +412 "dst r5,r4,1"
-func_check +416 "dstt r8,r7,0"
-func_check +420 "dstst r5,r6,3"
-func_check +424 "dststt r4,r5,2"
-func_check +428 "lvebx v30,r22,r24"
-func_check +432 "lvebx v21,0,r24"
-func_check +436 "lvehx v10,r16,r2"
-func_check +440 "lvehx v20,0,r23"
-func_check +444 "lvewx v17,r4,r18"
-func_check +448 "lvewx v23,0,r8"
-func_check +452 "lvsl v6,0,r25"
-func_check +456 "lvsl v2,0,r6"
-func_check +460 "lvsr v22,r16,r12"
-func_check +464 "lvsr v0,0,r29"
-func_check +468 "lvxl v15,r5,r13"
-func_check +472 "lvxl v19,0,r23"
-func_check +476 "lvx v22,r1,r2"
-func_check +480 "lvx v18,0,r17"
-func_check +484 "mfvrsave r31"
-func_check +488 "mfvscr v24"
-func_check +492 "mtvrsave r10"
-func_check +496 "mtvscr v25"
-func_check +500 "stvebx v18,r27,r10"
-func_check +504 "stvebx v16,0,r6"
-func_check +508 "stvehx v17,r13,r16"
-func_check +512 "stvehx v23,0,r20"
-func_check +516 "stvewx v11,r19,r31"
-func_check +520 "stvewx v31,0,r1"
-func_check +524 "stvxl v26,r21,r17"
-func_check +528 "stvxl v13,0,r22"
-func_check +532 "stvx v11,r31,r31"
-func_check +536 "stvx v30,0,r16"
-func_check +540 "vaddcuw v24,v7,v28"
-func_check +544 "vaddfp v3,v30,v11"
-func_check +548 "vaddsbs v8,v28,v9"
-func_check +552 "vaddshs v7,v5,v4"
-func_check +556 "vaddsws v22,v26,v27"
-func_check +560 "vaddubm v16,v14,v28"
-func_check +564 "vaddubs v6,v1,v25"
-func_check +568 "vadduhm v2,v4,v6"
-func_check +572 "vadduhs v26,v21,v8"
-func_check +576 "vadduwm v29,v31,v1"
-func_check +580 "vadduws v23,v13,v4"
-func_check +584 "vandc v30,v16,v9"
-func_check +588 "vand v3,v13,v27"
-func_check +592 "vavgsb v4,v6,v17"
-func_check +596 "vavgsh v23,v28,v19"
-func_check +600 "vavgsw v8,v15,v31"
-func_check +604 "vavgub v6,v7,v25"
-func_check +608 "vavguh v25,v22,v10"
-func_check +612 "vavguw v3,v23,v29"
-func_check +616 "vctsxs v14,v2,6"
-func_check +620 "vctuxs v9,v31,20"
-func_check +624 "vcfsx v24,v30,3"
-func_check +628 "vcfux v17,v21,29"
-func_check +632 "vcmpbfp v18,v28,v0"
-func_check +636 "vcmpbfp\. v19,v26,v3"
-func_check +640 "vcmpeqfp v16,v2,v11"
-func_check +644 "vcmpeqfp\. v23,v13,v13"
-func_check +648 "vcmpequb v25,v19,v10"
-func_check +652 "vcmpequb\. v18,v11,v2"
-func_check +656 "vcmpequh v9,v25,v7"
-func_check +660 "vcmpequh\. v14,v24,v21"
-func_check +664 "vcmpequw v24,v12,v5"
-func_check +668 "vcmpequw\. v19,v16,v1"
-func_check +672 "vcmpgefp v23,v17,v16"
-func_check +676 "vcmpgefp\. v19,v29,v17"
-func_check +680 "vcmpgtfp v16,v28,v13"
-func_check +684 "vcmpgtfp\. v14,v24,v7"
-func_check +688 "vcmpgtsb v16,v22,v6"
-func_check +692 "vcmpgtsb\. v2,v12,v14"
-func_check +696 "vcmpgtsh v28,v3,v29"
-func_check +700 "vcmpgtsh\. v16,v19,v13"
-func_check +704 "vcmpgtsw v15,v0,v5"
-func_check +708 "vcmpgtsw\. v21,v13,v0"
-func_check +712 "vcmpgtub v5,v10,v30"
-func_check +716 "vcmpgtub\. v7,v13,v10"
-func_check +720 "vcmpgtuh v24,v15,v16"
-func_check +724 "vcmpgtuh\. v25,v21,v27"
-func_check +728 "vcmpgtuw v17,v27,v6"
-func_check +732 "vcmpgtuw\. v8,v21,v27"
-func_check +736 "vcfsx v1,v1,14"
-func_check +740 "vctsxs v4,v15,25"
-func_check +744 "vctuxs v28,v23,14"
-func_check +748 "vcfux v6,v6,0"
-func_check +752 "vexptefp v0,v8"
-func_check +756 "vlogefp v22,v27"
-func_check +760 "vmaddfp v23,v18,v5,v18"
-func_check +764 "vmaxfp v13,v13,v27"
-func_check +768 "vmaxsb v8,v23,v14"
-func_check +772 "vmaxsh v19,v17,v0"
-func_check +776 "vmaxsw v19,v3,v22"
-func_check +780 "vmaxub v23,v30,v28"
-func_check +784 "vmaxuh v9,v20,v23"
-func_check +788 "vmaxuw v21,v19,v1"
-func_check +792 "vmhaddshs v22,v13,v5,v22"
-func_check +796 "vmhraddshs v31,v0,v3,v18"
-func_check +800 "vminfp v2,v21,v24"
-func_check +804 "vminsb v20,v6,v10"
-func_check +808 "vminsh v18,v27,v26"
-func_check +812 "vminsw v3,v4,v1"
-func_check +816 "vminub v7,v0,v13"
-func_check +820 "vminuh v0,v12,v6"
-func_check +824 "vminuw v6,v3,v1"
-func_check +828 "vmladduhm v3,v29,v3,v26"
-func_check +832 "vmrghb v21,v5,v31"
-func_check +836 "vmrghh v21,v24,v0"
-func_check +840 "vmrghw v16,v0,v22"
-func_check +844 "vmrglb v1,v17,v16"
-func_check +848 "vmrglh v14,v8,v15"
-func_check +852 "vmrglw v31,v21,v5"
-func_check +856 "vmr v24,v9"
-func_check +860 "vmr v24,v9"
-func_check +864 "vmsummbm v0,v24,v15,v23"
-func_check +868 "vmsumshm v1,v4,v7,v25"
-func_check +872 "vmsumshs v9,v8,v13,v31"
-func_check +876 "vmsumubm v23,v31,v12,v30"
-func_check +880 "vmsumuhm v29,v0,v26,v21"
-func_check +884 "vmsumuhs v27,v14,v25,v5"
-func_check +888 "vmulesb v10,v25,v14"
-func_check +892 "vmulesh v1,v18,v8"
-func_check +896 "vmuleub v17,v14,v9"
-func_check +900 "vmuleuh v5,v26,v9"
-func_check +904 "vmulosb v21,v18,v6"
-func_check +908 "vmulosh v4,v5,v8"
-func_check +912 "vmuloub v2,v9,v19"
-func_check +916 "vmulouh v29,v5,v4"
-func_check +920 "vnmsubfp v8,v2,v6,v5"
-func_check +924 "vnor v31,v9,v10"
-func_check +928 "vnot v25,v31"
-func_check +932 "vnot v25,v31"
-func_check +936 "vor v23,v7,v2"
-func_check +940 "vperm v0,v28,v22,v25"
-func_check +944 "vpkpx v16,v25,v17"
-func_check +948 "vpkshss v12,v16,v17"
-func_check +952 "vpkshus v1,v19,v23"
-func_check +956 "vpkswss v25,v7,v13"
-func_check +960 "vpkswus v4,v24,v10"
-func_check +964 "vpkuhum v9,v27,v12"
-func_check +968 "vpkuhus v22,v10,v25"
-func_check +972 "vpkuwum v30,v18,v0"
-func_check +976 "vpkuwus v7,v3,v22"
-func_check +980 "vrefp v24,v28"
-func_check +984 "vrfim v17,v19"
-func_check +988 "vrfin v24,v25"
-func_check +992 "vrfip v3,v5"
-func_check +996 "vrfiz v8,v10"
-func_check +1000 "vrlb v26,v18,v30"
-func_check +1004 "vrlh v16,v17,v25"
-func_check +1008 "vrlw v23,v30,v9"
-func_check +1012 "vrsqrtefp v2,v18"
-func_check +1016 "vsel v20,v14,v18,v10"
-func_check +1020 "vslb v25,v25,v12"
-func_check +1024 "vsldoi v9,v9,v12,7"
-func_check +1028 "vslh v14,v2,v11"
-func_check +1032 "vslo v30,v5,v6"
-func_check +1036 "vsl v22,v30,v9"
-func_check +1040 "vslw v26,v26,v3"
-func_check +1044 "vspltb v1,v20,6"
-func_check +1048 "vsplth v16,v18,3"
-func_check +1052 "vspltisb v25,-13"
-func_check +1056 "vspltish v22,10"
-func_check +1060 "vspltisw v13,13"
-func_check +1064 "vspltw v9,v18,2"
-func_check +1068 "vsrab v14,v22,v0"
-func_check +1072 "vsrah v12,v12,v18"
-func_check +1076 "vsraw v2,v2,v13"
-func_check +1080 "vsrb v7,v27,v5"
-func_check +1084 "vsrh v7,v11,v29"
-func_check +1088 "vsro v18,v30,v31"
-func_check +1092 "vsr v2,v9,v28"
-func_check +1096 "vsrw v0,v25,v0"
-func_check +1100 "vsubcuw v24,v2,v10"
-func_check +1104 "vsubfp v22,v24,v20"
-func_check +1108 "vsubsbs v10,v22,v13"
-func_check +1112 "vsubshs v24,v17,v28"
-func_check +1116 "vsubsws v10,v26,v0"
-func_check +1120 "vsububm v16,v11,v24"
-func_check +1124 "vsububs v11,v21,v1"
-func_check +1128 "vsubuhm v6,v12,v24"
-func_check +1132 "vsubuhs v30,v11,v9"
-func_check +1136 "vsubuwm v19,v20,v13"
-func_check +1140 "vsubuws v18,v25,v6"
-func_check +1144 "vsum2sws v25,v10,v18"
-func_check +1148 "vsum4sbs v13,v16,v21"
-func_check +1152 "vsum4shs v23,v8,v4"
-func_check +1156 "vsum4ubs v28,v13,v30"
-func_check +1160 "vsumsws v22,v10,v8"
-func_check +1164 "vupkhpx v24,v14"
-func_check +1168 "vupkhsb v2,v22"
-func_check +1172 "vupkhsh v16,v2"
-func_check +1176 "vupklpx v10,v26"
-func_check +1180 "vupklsb v15,v28"
-func_check +1184 "vupklsh v8,v8"
-func_check +1188 "vxor v25,v0,v3"
-
-## vsd.d
-func_check +1192 "lxsdx vs40,r10,r20"
-func_check +1196 "lxvd2x vs40,r10,r20"
-func_check +1200 "lxvdsx vs40,r10,r20"
-func_check +1204 "lxvw4x vs40,r10,r20"
-func_check +1208 "stxsdx vs40,r10,r20"
-func_check +1212 "stxvd2x vs40,r10,r20"
-func_check +1216 "stxvw4x vs40,r10,r20"
-func_check +1220 "xsabsdp vs40,vs60"
-func_check +1224 "xsadddp vs40,vs50,vs60"
-func_check +1228 "xscmpodp cr1,vs50,vs60"
-func_check +1232 "xscmpudp cr1,vs50,vs60"
-func_check +1236 "xscpsgndp vs40,vs50,vs60"
-func_check +1240 "xscvdpsp vs40,vs60"
-func_check +1244 "xscvdpsxds vs40,vs60"
-func_check +1248 "xscvdpsxws vs40,vs60"
-func_check +1252 "xscvdpuxds vs40,vs60"
-func_check +1256 "xscvdpuxws vs40,vs60"
-func_check +1260 "xscvspdp vs40,vs60"
-func_check +1264 "xscvsxddp vs40,vs60"
-func_check +1268 "xscvuxddp vs40,vs60"
-func_check +1272 "xsdivdp vs40,vs50,vs60"
-func_check +1276 "xsmaddadp vs40,vs50,vs60"
-func_check +1280 "xsmaddmdp vs40,vs50,vs60"
-func_check +1284 "xsmaxdp vs40,vs50,vs60"
-func_check +1288 "xsmindp vs40,vs50,vs60"
-func_check +1292 "xsmsubadp vs40,vs50,vs60"
-func_check +1296 "xsmsubmdp vs40,vs50,vs60"
-func_check +1300 "xsmuldp vs40,vs50,vs60"
-func_check +1304 "xsnabsdp vs40,vs60"
-func_check +1308 "xsnegdp vs40,vs60"
-func_check +1312 "xsnmaddadp vs40,vs50,vs60"
-func_check +1316 "xsnmaddmdp vs40,vs50,vs60"
-func_check +1320 "xsnmsubadp vs40,vs50,vs60"
-func_check +1324 "xsnmsubmdp vs40,vs50,vs60"
-func_check +1328 "xsrdpi vs40,vs60"
-func_check +1332 "xsrdpic vs40,vs60"
-func_check +1336 "xsrdpim vs40,vs60"
-func_check +1340 "xsrdpip vs40,vs60"
-func_check +1344 "xsrdpiz vs40,vs60"
-func_check +1348 "xsredp vs40,vs60"
-func_check +1352 "xsrsqrtedp vs40,vs60"
-func_check +1356 "xssqrtdp vs40,vs60"
-func_check +1360 "xssubdp vs40,vs50,vs60"
-func_check +1364 "xstdivdp cr1,vs50,vs60"
-func_check +1368 "xstsqrtdp cr1,vs60"
-func_check +1372 "xvabsdp vs40,vs60"
-func_check +1376 "xvabssp vs40,vs60"
-func_check +1380 "xvadddp vs40,vs50,vs60"
-func_check +1384 "xvaddsp vs40,vs50,vs60"
-func_check +1388 "xvcmpeqdp vs40,vs50,vs60"
-func_check +1392 "xvcmpeqdp\. vs40,vs50,vs60"
-func_check +1396 "xvcmpeqsp vs40,vs50,vs60"
-func_check +1400 "xvcmpeqsp\. vs40,vs50,vs60"
-func_check +1404 "xvcmpgedp vs40,vs50,vs60"
-func_check +1408 "xvcmpgedp\. vs40,vs50,vs60"
-func_check +1412 "xvcmpgesp vs40,vs50,vs60"
-func_check +1416 "xvcmpgesp\. vs40,vs50,vs60"
-func_check +1420 "xvcmpgtdp vs40,vs50,vs60"
-func_check +1424 "xvcmpgtdp\. vs40,vs50,vs60"
-func_check +1428 "xvcmpgtsp vs40,vs50,vs60"
-func_check +1432 "xvcmpgtsp\. vs40,vs50,vs60"
-func_check +1436 "xvcpsgndp vs40,vs50,vs60"
-func_check +1440 "xvmovdp vs40,vs60"
-func_check +1444 "xvmovdp vs40,vs60"
-func_check +1448 "xvcpsgnsp vs40,vs50,vs60"
-func_check +1452 "xvmovsp vs40,vs60"
-func_check +1456 "xvmovsp vs40,vs60"
-func_check +1460 "xvcvdpsp vs40,vs60"
-func_check +1464 "xvcvdpsxds vs40,vs60"
-func_check +1468 "xvcvdpsxws vs40,vs60"
-func_check +1472 "xvcvdpuxds vs40,vs60"
-func_check +1476 "xvcvdpuxws vs40,vs60"
-func_check +1480 "xvcvspdp vs40,vs60"
-func_check +1484 "xvcvspsxds vs40,vs60"
-func_check +1488 "xvcvspsxws vs40,vs60"
-func_check +1492 "xvcvspuxds vs40,vs60"
-func_check +1496 "xvcvspuxws vs40,vs60"
-func_check +1500 "xvcvsxddp vs40,vs60"
-func_check +1504 "xvcvsxdsp vs40,vs60"
-func_check +1508 "xvcvsxwdp vs40,vs60"
-func_check +1512 "xvcvsxwsp vs40,vs60"
-func_check +1516 "xvcvuxddp vs40,vs60"
-func_check +1520 "xvcvuxdsp vs40,vs60"
-func_check +1524 "xvcvuxwdp vs40,vs60"
-func_check +1528 "xvcvuxwsp vs40,vs60"
-func_check +1532 "xvdivdp vs40,vs50,vs60"
-func_check +1536 "xvdivsp vs40,vs50,vs60"
-func_check +1540 "xvmaddadp vs40,vs50,vs60"
-func_check +1544 "xvmaddmdp vs40,vs50,vs60"
-func_check +1548 "xvmaddasp vs40,vs50,vs60"
-func_check +1552 "xvmaddmsp vs40,vs50,vs60"
-func_check +1556 "xvmaxdp vs40,vs50,vs60"
-func_check +1560 "xvmaxsp vs40,vs50,vs60"
-func_check +1564 "xvmindp vs40,vs50,vs60"
-func_check +1568 "xvminsp vs40,vs50,vs60"
-func_check +1572 "xvmsubadp vs40,vs50,vs60"
-func_check +1576 "xvmsubmdp vs40,vs50,vs60"
-func_check +1580 "xvmsubasp vs40,vs50,vs60"
-func_check +1584 "xvmsubmsp vs40,vs50,vs60"
-func_check +1588 "xvmuldp vs40,vs50,vs60"
-func_check +1592 "xvmulsp vs40,vs50,vs60"
-func_check +1596 "xvnabsdp vs40,vs60"
-func_check +1600 "xvnabssp vs40,vs60"
-func_check +1604 "xvnegdp vs40,vs60"
-func_check +1608 "xvnegsp vs40,vs60"
-func_check +1612 "xvnmaddadp vs40,vs50,vs60"
-func_check +1616 "xvnmaddmdp vs40,vs50,vs60"
-func_check +1620 "xvnmaddasp vs40,vs50,vs60"
-func_check +1624 "xvnmaddmsp vs40,vs50,vs60"
-func_check +1628 "xvnmsubadp vs40,vs50,vs60"
-func_check +1632 "xvnmsubmdp vs40,vs50,vs60"
-func_check +1636 "xvnmsubasp vs40,vs50,vs60"
-func_check +1640 "xvnmsubmsp vs40,vs50,vs60"
-func_check +1644 "xvrdpi vs40,vs60"
-func_check +1648 "xvrdpic vs40,vs60"
-func_check +1652 "xvrdpim vs40,vs60"
-func_check +1656 "xvrdpip vs40,vs60"
-func_check +1660 "xvrdpiz vs40,vs60"
-func_check +1664 "xvredp vs40,vs60"
-func_check +1668 "xvresp vs40,vs60"
-func_check +1672 "xvrspi vs40,vs60"
-func_check +1676 "xvrspic vs40,vs60"
-func_check +1680 "xvrspim vs40,vs60"
-func_check +1684 "xvrspip vs40,vs60"
-func_check +1688 "xvrspiz vs40,vs60"
-func_check +1692 "xvrsqrtedp vs40,vs60"
-func_check +1696 "xvrsqrtesp vs40,vs60"
-func_check +1700 "xvsqrtdp vs40,vs60"
-func_check +1704 "xvsqrtsp vs40,vs60"
-func_check +1708 "xvsubdp vs40,vs50,vs60"
-func_check +1712 "xvsubsp vs40,vs50,vs60"
-func_check +1716 "xvtdivdp cr1,vs50,vs60"
-func_check +1720 "xvtdivsp cr1,vs50,vs60"
-func_check +1724 "xvtsqrtdp cr1,vs60"
-func_check +1728 "xvtsqrtsp cr1,vs60"
-func_check +1732 "xxland vs40,vs50,vs60"
-func_check +1736 "xxlandc vs40,vs50,vs60"
-func_check +1740 "xxlnor vs40,vs50,vs60"
-func_check +1744 "xxlor vs40,vs50,vs60"
-func_check +1748 "xxlxor vs40,vs50,vs60"
-func_check +1752 "xxmrghw vs40,vs50,vs60"
-func_check +1756 "xxmrglw vs40,vs50,vs60"
-func_check +1760 "xxmrghd vs40,vs50,vs60"
-func_check +1764 "xxpermdi vs40,vs50,vs60,1"
-func_check +1768 "xxpermdi vs40,vs50,vs60,2"
-func_check +1772 "xxmrgld vs40,vs50,vs60"
-func_check +1776 "xxspltd vs40,vs50,0"
-func_check +1780 "xxspltd vs40,vs50,0"
-func_check +1784 "xxspltd vs40,vs50,1"
-func_check +1788 "xxspltd vs40,vs50,1"
-func_check +1792 "xxmrghd vs40,vs50,vs60"
-func_check +1796 "xxmrghd vs40,vs50,vs60"
-func_check +1800 "xxmrgld vs40,vs50,vs60"
-func_check +1804 "xxswapd vs40,vs50"
-func_check +1808 "xxswapd vs40,vs50"
-func_check +1812 "xxsel vs40,vs50,vs60,vs62"
-func_check +1816 "xxsldwi vs40,vs50,vs60,2"
-func_check +1820 "xxspltw vs40,vs60,2"
-func_check +1824 "lxvd2x vs40,0,r20"
-func_check +1828 "lxvd2x vs40,r10,r20"
-func_check +1832 "stxvd2x vs40,0,r20"
-func_check +1836 "stxvd2x vs40,r10,r20"
-
-## power8.d
-func_check +1840 "tabort\. r5"
-func_check +1844 "tabortwc\. 7,r8,r16"
-func_check +1848 "tabortdc\. 20,r11,r10"
-func_check +1852 "tabortwci\. 17,r10,-13"
-func_check +1856 "tabortdci\. 29,r3,-5"
-func_check +1860 "tbegin\."
-func_check +1864 "tcheck cr7"
-func_check +1868 "tend\."
-func_check +1872 "tend\."
-func_check +1876 "tendall\."
-func_check +1880 "tendall\."
-func_check +1884 "treclaim\. r24"
-func_check +1888 "trechkpt\."
-func_check +1892 "tsuspend\."
-func_check +1896 "tsuspend\."
-func_check +1900 "tresume\."
-func_check +1904 "tresume\."
-func_check +1908 "ori r2,r2,0"
-func_check +1912 "nop"
-func_check +1916 "ori r2,r2,0"
-func_check +1920 "rfebb 0"
-func_check +1924 "rfebb"
-func_check +1928 "rfebb"
-func_check +1932 "bctar- 12,4\\*cr5\\+gt"
-func_check +1936 "bctarl- 4,4\\*cr1\\+so"
-func_check +1940 "bctar\\+ 12,4\\*cr3\\+lt"
-func_check +1944 "bctarl\\+ 4,eq"
-func_check +1948 "bctar 4,4\\*cr2\\+lt,1"
-func_check +1952 "bctarl 4,4\\*cr1\\+so,2"
-func_check +1956 "wait"
-func_check +1960 "msgsndp r8"
-func_check +1964 "mtsle 1"
-func_check +1968 "msgclrp r27"
-func_check +1972 "stqcx\. r10,r10,r12"
-func_check +1976 "stqcx\. r28,0,r7"
-func_check +1980 "lqarx r24,r19,r11"
-func_check +1984 "lqarx r22,0,r11"
-func_check +1988 "mfbhrbe r20,6"
-func_check +1992 "pbt\. r29,r17,r16"
-func_check +1996 "pbt\. r14,0,r7"
-func_check +2000 "clrbhrb"
-func_check +2004 "vpermxor v11,v10,v0,v23"
-func_check +2008 "vaddeuqm v24,v2,v7,v4"
-func_check +2012 "vaddecuq v10,v10,v8,v2"
-func_check +2016 "vsubeuqm v5,v15,v8,v19"
-func_check +2020 "vsubecuq v12,v31,v16,v29"
-func_check +2024 "vmulouw v20,v29,v13"
-func_check +2028 "vmuluwm v29,v0,v26"
-func_check +2032 "vaddudm v8,v21,v28"
-func_check +2036 "vmaxud v1,v26,v1"
-func_check +2040 "vrld v20,v3,v1"
-func_check +2044 "vcmpequd v4,v19,v11"
-func_check +2048 "vadduqm v23,v14,v30"
-func_check +2052 "vaddcuq v8,v8,v13"
-func_check +2056 "vmulosw v28,v27,v4"
-func_check +2060 "vmaxsd v3,v4,v4"
-func_check +2064 "vmuleuw v0,v19,v21"
-func_check +2068 "vminud v24,v20,v19"
-func_check +2072 "vcmpgtud v0,v28,v15"
-func_check +2076 "vmulesw v21,v0,v2"
-func_check +2080 "vminsd v9,v26,v9"
-func_check +2084 "vsrad v25,v29,v11"
-func_check +2088 "vcmpgtsd v11,v28,v11"
-func_check +2092 "bcdadd\. v5,v8,v26,1"
-func_check +2096 "vpmsumb v4,v3,v12"
-func_check +2100 "bcdsub\. v26,v31,v21,1"
-func_check +2104 "vpmsumh v5,v17,v16"
-func_check +2108 "vpkudum v23,v17,v20"
-func_check +2112 "vpmsumw v24,v21,v29"
-func_check +2116 "vpmsumd v9,v22,v13"
-func_check +2120 "vpkudus v18,v19,v18"
-func_check +2124 "vsubuqm v30,v16,v22"
-func_check +2128 "vcipher v14,v11,v7"
-func_check +2132 "vcipherlast v10,v2,v22"
-func_check +2136 "vgbbd v23,v13"
-func_check +2140 "vsubcuq v16,v25,v16"
-func_check +2144 "vorc v31,v1,v5"
-func_check +2148 "vncipher v4,v17,v31"
-func_check +2152 "vncipherlast v24,v2,v27"
-func_check +2156 "vbpermq v23,v21,v23"
-func_check +2160 "vpksdus v27,v18,v9"
-func_check +2164 "vnand v27,v29,v27"
-func_check +2168 "vsld v19,v19,v24"
-func_check +2172 "vsbox v5,v13"
-func_check +2176 "vpksdss v25,v3,v7"
-func_check +2180 "vcmpequd\. v28,v8,v0"
-func_check +2184 "vupkhsw v26,v26"
-func_check +2188 "vshasigmaw v5,v7,0,6"
-func_check +2192 "veqv v28,v21,v14"
-func_check +2196 "vmrgow v1,v8,v19"
-func_check +2200 "vshasigmad v0,v10,0,10"
-func_check +2204 "vsrd v5,v27,v14"
-func_check +2208 "vupklsw v11,v13"
-func_check +2212 "vclzb v14,v16"
-func_check +2216 "vpopcntb v20,v27"
-func_check +2220 "vclzh v28,v11"
-func_check +2224 "vpopcnth v24,v9"
-func_check +2228 "vclzw v27,v31"
-func_check +2232 "vpopcntw v17,v19"
-func_check +2236 "vclzd v12,v29"
-func_check +2240 "vpopcntd v23,v22"
-func_check +2244 "vcmpgtud\. v24,v20,v29"
-func_check +2248 "vcmpgtsd\. v9,v6,v27"
-func_check +2252 "lxsiwzx vs62,r14,r26"
-func_check +2256 "lxsiwzx vs40,0,r25"
-func_check +2260 "lxsiwax vs25,0,r26"
-func_check +2264 "lxsiwax vs3,0,r3"
-func_check +2268 "mfvsrd r12,vs62"
-func_check +2272 "mffprwz r20,f12"
-func_check +2276 "stxsiwx vs14,r9,r14"
-func_check +2280 "stxsiwx vs21,0,r8"
-func_check +2284 "mtvsrd vs48,r11"
-func_check +2288 "mtvrwa v31,r23"
-func_check +2292 "mtfprwz f16,r26"
-func_check +2296 "lxsspx vs13,r19,r13"
-func_check +2300 "lxsspx vs18,0,r13"
-func_check +2304 "stxsspx vs43,r2,r4"
-func_check +2308 "stxsspx vs55,0,r11"
-func_check +2312 "xsaddsp vs54,vs48,vs25"
-func_check +2316 "xsmaddasp vs14,vs50,vs1"
-func_check +2320 "xssubsp vs26,vs22,vs42"
-func_check +2324 "xsmaddmsp vs27,vs53,vs52"
-func_check +2328 "xsrsqrtesp vs8,vs59"
-func_check +2332 "xssqrtsp vs12,vs41"
-func_check +2336 "xsmulsp vs57,vs11,vs32"
-func_check +2340 "xsmsubasp vs38,vs20,vs26"
-func_check +2344 "xsdivsp vs26,vs19,vs6"
-func_check +2348 "xsmsubmsp vs35,vs37,vs55"
-func_check +2352 "xsresp vs59,vs8"
-func_check +2356 "xsnmaddasp vs44,vs33,vs33"
-func_check +2360 "xsnmaddmsp vs17,vs62,vs30"
-func_check +2364 "xsnmsubasp vs54,vs52,vs31"
-func_check +2368 "xsnmsubmsp vs37,vs5,vs58"
-func_check +2372 "xxlorc vs30,vs54,vs44"
-func_check +2376 "xxlnand vs49,vs14,vs29"
-func_check +2380 "xxleqv vs62,vs22,vs30"
-func_check +2384 "xscvdpspn vs60,vs54"
-func_check +2388 "xsrsp vs22,vs45"
-func_check +2392 "xscvuxdsp vs26,vs59"
-func_check +2396 "xscvsxdsp vs38,vs49"
-func_check +2400 "xscvspdpn vs59,vs26"
-func_check +2404 "fmrgow f24,f14,f2"
-func_check +2408 "fmrgew f22,f7,f5"
-func_check +2412 "msgsnd r14"
-func_check +2416 "msgclr r23"
-func_check +2420 "lxvd2x vs40,0,r5"
-func_check +2424 "lxvd2x vs40,0,r5"
-func_check +2428 "lxvd2x vs10,r20,r6"
-func_check +2432 "lxvd2x vs10,r20,r6"
-func_check +2436 "stxvd2x vs41,0,r7"
-func_check +2440 "stxvd2x vs41,0,r7"
-func_check +2444 "stxvd2x vs11,r21,r8"
-func_check +2448 "stxvd2x vs11,r21,r8"
-
-## altivec2.d
-func_check +2452 "lvepxl v3,0,r28"
-func_check +2456 "lvepxl v19,r4,r18"
-func_check +2460 "lvepx v27,0,r19"
-func_check +2464 "lvepx v1,r25,r18"
-func_check +2468 "lvexbx v31,0,r27"
-func_check +2472 "lvexbx v28,r1,r12"
-func_check +2476 "lvexhx v31,0,r14"
-func_check +2480 "lvexhx v17,r16,r31"
-func_check +2484 "lvexwx v22,0,r29"
-func_check +2488 "lvexwx v23,r25,r5"
-func_check +2492 "lvsm v3,0,r12"
-func_check +2496 "lvsm v27,r29,r1"
-func_check +2500 "lvswxl v7,0,r6"
-func_check +2504 "lvswxl v7,r16,r8"
-func_check +2508 "lvswx v14,0,r18"
-func_check +2512 "lvswx v28,r28,r16"
-func_check +2516 "lvtlxl v27,0,r12"
-func_check +2520 "lvtlxl v27,r28,r0"
-func_check +2524 "lvtlx v23,0,r25"
-func_check +2528 "lvtlx v1,r25,r14"
-func_check +2532 "lvtrxl v20,0,r24"
-func_check +2536 "lvtrxl v22,r29,r24"
-func_check +2540 "lvtrx v24,0,r8"
-func_check +2544 "lvtrx v13,r23,r28"
-func_check +2548 "mvidsplt v12,r28,r12"
-func_check +2552 "mviwsplt v10,r27,r0"
-func_check +2556 "stvepxl v27,0,r13"
-func_check +2560 "stvepxl v2,r2,r31"
-func_check +2564 "stvepx v3,0,r10"
-func_check +2568 "stvepx v27,r28,r0"
-func_check +2572 "stvexbx v13,0,r6"
-func_check +2576 "stvexbx v13,r25,r3"
-func_check +2580 "stvexhx v22,0,r1"
-func_check +2584 "stvexhx v17,r14,r10"
-func_check +2588 "stvexwx v21,0,r27"
-func_check +2592 "stvexwx v31,r18,r1"
-func_check +2596 "stvflxl v26,0,r13"
-func_check +2600 "stvflxl v22,r13,r21"
-func_check +2604 "stvflx v5,0,r9"
-func_check +2608 "stvflx v21,r24,r1"
-func_check +2612 "stvfrxl v13,0,r10"
-func_check +2616 "stvfrxl v13,r17,r25"
-func_check +2620 "stvfrx v17,0,r10"
-func_check +2624 "stvfrx v8,r12,r31"
-func_check +2628 "stvswxl v18,0,r29"
-func_check +2632 "stvswxl v26,r14,r8"
-func_check +2636 "stvswx v0,0,r15"
-func_check +2640 "stvswx v13,r23,r7"
-func_check +2644 "vabsdub v6,v17,v16"
-func_check +2648 "vabsduh v21,v18,v4"
-func_check +2652 "vabsduw v25,v20,v9"
-func_check +2656 "vpermxor v6,v17,v20,v26"
-func_check +2660 "vaddeuqm v29,v26,v15,v28"
-func_check +2664 "vaddecuq v15,v8,v7,v24"
-func_check +2668 "vsubeuqm v2,v6,v21,v1"
-func_check +2672 "vsubecuq v29,v6,v0,v4"
-func_check +2676 "vmulouw v14,v9,v3"
-func_check +2680 "vmuluwm v24,v16,v18"
-func_check +2684 "vaddudm v10,v17,v17"
-func_check +2688 "vmaxud v30,v25,v4"
-func_check +2692 "vrld v10,v6,v28"
-func_check +2696 "vcmpequd v27,v7,v7"
-func_check +2700 "vadduqm v22,v16,v25"
-func_check +2704 "vaddcuq v1,v21,v29"
-func_check +2708 "vmulosw v20,v11,v19"
-func_check +2712 "vmaxsd v24,v19,v1"
-func_check +2716 "vmuleuw v13,v27,v30"
-func_check +2720 "vminud v9,v24,v17"
-func_check +2724 "vcmpgtud v10,v18,v28"
-func_check +2728 "vmulesw v0,v29,v22"
-func_check +2732 "vminsd v13,v28,v1"
-func_check +2736 "vsrad v10,v20,v5"
-func_check +2740 "vcmpgtsd v27,v21,v5"
-func_check +2744 "bcdadd\. v0,v23,v30,1"
-func_check +2748 "vpmsumb v25,v24,v26"
-func_check +2752 "bcdsub\. v8,v4,v4,1"
-func_check +2756 "vpmsumh v16,v14,v26"
-func_check +2760 "vpkudum v27,v2,v26"
-func_check +2764 "vpmsumw v6,v23,v17"
-func_check +2768 "vpmsumd v20,v6,v25"
-func_check +2772 "vpkudus v27,v22,v16"
-func_check +2776 "vsubudm v21,v20,v18"
-func_check +2780 "vsubuqm v21,v20,v18"
-func_check +2784 "vcipher v29,v29,v6"
-func_check +2788 "vcipherlast v2,v13,v20"
-func_check +2792 "vgbbd v20,v18"
-func_check +2796 "vsubcuq v19,v8,v25"
-func_check +2800 "vorc v9,v26,v29"
-func_check +2804 "vncipher v20,v20,v13"
-func_check +2808 "vncipherlast v15,v5,v27"
-func_check +2812 "vbpermq v3,v19,v6"
-func_check +2816 "vpksdus v30,v4,v28"
-func_check +2820 "vnand v0,v4,v14"
-func_check +2824 "vsld v17,v8,v29"
-func_check +2828 "vsbox v29,v20"
-func_check +2832 "vpksdss v11,v7,v11"
-func_check +2836 "vcmpequd\. v3,v19,v16"
-func_check +2840 "vupkhsw v18,v17"
-func_check +2844 "vshasigmaw v29,v8,0,13"
-func_check +2848 "veqv v23,v28,v26"
-func_check +2852 "vmrgew v29,v0,v2"
-func_check +2856 "vmrgow v29,v0,v2"
-func_check +2860 "vshasigmad v27,v19,0,0"
-func_check +2864 "vsrd v20,v28,v28"
-func_check +2868 "vupklsw v18,v21"
-func_check +2872 "vclzb v30,v7"
-func_check +2876 "vpopcntb v29,v21"
-func_check +2880 "vclzh v25,v21"
-func_check +2884 "vpopcnth v16,v30"
-func_check +2888 "vclzw v28,v3"
-func_check +2892 "vpopcntw v10,v9"
-func_check +2896 "vclzd v22,v9"
-func_check +2900 "vpopcntd v15,v30"
-func_check +2904 "vcmpgtud\. v2,v31,v6"
-func_check +2908 "vcmpgtsd\. v20,v15,v2"
-
-## vsd2.d
-func_check +2912 "lxsiwzx vs62,r14,r26"
-func_check +2916 "lxsiwzx vs40,0,r25"
-func_check +2920 "lxsiwax vs25,0,r26"
-func_check +2924 "lxsiwax vs3,0,r3"
-func_check +2928 "mfvsrd r12,vs30"
-func_check +2932 "mfvsrd r12,vs30"
-func_check +2936 "mfvsrd r12,vs62"
-func_check +2940 "mfvsrd r12,vs62"
-func_check +2944 "mffprwz r20,f12"
-func_check +2948 "mffprwz r20,f12"
-func_check +2952 "mfvrwz r21,v12"
-func_check +2956 "mfvrwz r21,v12"
-func_check +2960 "stxsiwx vs14,r9,r14"
-func_check +2964 "stxsiwx vs21,0,r8"
-func_check +2968 "mtvsrd vs11,r28"
-func_check +2972 "mtvsrd vs11,r28"
-func_check +2976 "mtvsrd vs43,r29"
-func_check +2980 "mtvsrd vs43,r29"
-func_check +2984 "mtfprwa f24,r22"
-func_check +2988 "mtfprwa f24,r22"
-func_check +2992 "mtvrwa v25,r23"
-func_check +2996 "mtvrwa v25,r23"
-func_check +3000 "mtfprwz f26,r27"
-func_check +3004 "mtfprwz f26,r27"
-func_check +3008 "mtvrwz v27,r28"
-func_check +3012 "mtvrwz v27,r28"
-func_check +3016 "lxsspx vs13,r19,r13"
-func_check +3020 "lxsspx vs18,0,r13"
-func_check +3024 "stxsspx vs43,r2,r4"
-func_check +3028 "stxsspx vs55,0,r11"
-func_check +3032 "xsaddsp vs54,vs48,vs25"
-func_check +3036 "xsmaddasp vs14,vs50,vs1"
-func_check +3040 "xssubsp vs26,vs22,vs42"
-func_check +3044 "xsmaddmsp vs27,vs53,vs52"
-func_check +3048 "xsrsqrtesp vs8,vs59"
-func_check +3052 "xssqrtsp vs12,vs41"
-func_check +3056 "xsmulsp vs57,vs11,vs32"
-func_check +3060 "xsmsubasp vs38,vs20,vs26"
-func_check +3064 "xsdivsp vs26,vs19,vs6"
-func_check +3068 "xsmsubmsp vs35,vs37,vs55"
-func_check +3072 "xsresp vs59,vs8"
-func_check +3076 "xsnmaddasp vs44,vs33,vs33"
-func_check +3080 "xsnmaddmsp vs17,vs62,vs30"
-func_check +3084 "xsnmsubasp vs54,vs52,vs31"
-func_check +3088 "xsnmsubmsp vs37,vs5,vs58"
-func_check +3092 "xxlorc vs30,vs54,vs44"
-func_check +3096 "xxlnand vs49,vs14,vs29"
-func_check +3100 "xxleqv vs62,vs22,vs30"
-func_check +3104 "xscvdpspn vs60,vs54"
-func_check +3108 "xsrsp vs22,vs45"
-func_check +3112 "xscvuxdsp vs26,vs59"
-func_check +3116 "xscvsxdsp vs38,vs49"
-func_check +3120 "xscvspdpn vs59,vs26"
-func_check +3124 "fmrgow f24,f14,f2"
-func_check +3128 "fmrgew f22,f7,f5"
-
-## power9.d
-func_check +3132 "cnttzd r3,r13"
-func_check +3136 "cnttzd\. r4,r14"
-func_check +3140 "cnttzw r5,r15"
-func_check +3144 "cnttzw\. r6,r16"
-func_check +3148 "modsd r10,r20,r21"
-func_check +3152 "modsw r11,r21,r22"
-func_check +3156 "modud r12,r22,r23"
-func_check +3160 "moduw r13,r23,r24"
-func_check +3164 "bcdcfn\. v3,v4,0"
-func_check +3168 "bcdcfn\. v3,v4,1"
-func_check +3172 "bcdcfsq\. v4,v5,0"
-func_check +3176 "bcdcfsq\. v4,v5,1"
-func_check +3180 "bcdcfz\. v5,v6,0"
-func_check +3184 "bcdcfz\. v5,v6,1"
-func_check +3188 "bcdcpsgn\. v6,v7,v8"
-func_check +3192 "bcdctn\. v7,v8"
-func_check +3196 "bcdctsq\. v8,v9"
-func_check +3200 "bcdctz\. v9,v10,0"
-func_check +3204 "bcdctz\. v9,v10,1"
-func_check +3208 "bcdsetsgn\. v10,v11,0"
-func_check +3212 "bcdsetsgn\. v10,v11,1"
-func_check +3216 "bcdsr\. v11,v12,v13,0"
-func_check +3220 "bcdsr\. v11,v12,v13,1"
-func_check +3224 "bcds\. v12,v13,v14,0"
-func_check +3228 "bcds\. v12,v13,v14,1"
-func_check +3232 "bcdtrunc\. v13,v14,v15,0"
-func_check +3236 "bcdtrunc\. v13,v14,v15,1"
-func_check +3240 "bcdus\. v14,v15,v16"
-func_check +3244 "bcdutrunc\. v15,v16,v17"
-func_check +3248 "lxvll vs20,0,r21"
-func_check +3252 "lxvll vs20,r10,r21"
-func_check +3256 "stxvll vs21,0,r11"
-func_check +3260 "stxvll vs21,r10,r11"
-func_check +3264 "vmul10cuq v22,v23"
-func_check +3268 "vmul10ecuq v23,v24,v25"
-func_check +3272 "vmul10euq v24,v25,v26"
-func_check +3276 "vmul10uq v25,v26"
-func_check +3280 "xsaddqp v10,v11,v12"
-func_check +3284 "xsaddqpo v11,v12,v12"
-func_check +3288 "xsrqpi 0,v20,v30,0"
-func_check +3292 "xsrqpi 1,v20,v30,0"
-func_check +3296 "xsrqpi 0,v20,v30,3"
-func_check +3300 "xsrqpi 1,v20,v30,3"
-func_check +3304 "xsrqpix 0,v21,v31,0"
-func_check +3308 "xsrqpix 1,v21,v31,0"
-func_check +3312 "xsrqpix 0,v21,v31,3"
-func_check +3316 "xsrqpix 1,v21,v31,3"
-func_check +3320 "xsmulqp v12,v13,v14"
-func_check +3324 "xsmulqpo v13,v14,v15"
-func_check +3328 "xsrqpxp 0,v22,v23,0"
-func_check +3332 "xsrqpxp 1,v22,v23,0"
-func_check +3336 "xsrqpxp 0,v22,v23,3"
-func_check +3340 "xsrqpxp 1,v22,v23,3"
-func_check +3344 "xscpsgnqp v14,v15,v16"
-func_check +3348 "xscmpoqp cr0,v15,v16"
-func_check +3352 "xscmpoqp cr7,v15,v16"
-func_check +3356 "xscmpexpqp cr0,v16,v17"
-func_check +3360 "xscmpexpqp cr7,v16,v17"
-func_check +3364 "xsmaddqp v17,v18,v19"
-func_check +3368 "xsmaddqpo v18,v19,v20"
-func_check +3372 "xsmsubqp v19,v20,v21"
-func_check +3376 "xsmsubqpo v20,v21,v22"
-func_check +3380 "xsnmaddqp v21,v22,v23"
-func_check +3384 "xsnmaddqpo v22,v23,v24"
-func_check +3388 "xsnmsubqp v23,v24,v25"
-func_check +3392 "xsnmsubqpo v24,v25,v26"
-func_check +3396 "xssubqp v25,v26,v27"
-func_check +3400 "xssubqpo v26,v27,v28"
-func_check +3404 "xsdivqp v27,v28,v29"
-func_check +3408 "xsdivqpo v28,v29,v30"
-func_check +3412 "xscmpuqp cr0,v29,v30"
-func_check +3416 "xscmpuqp cr7,v29,v30"
-func_check +3420 "xststdcqp cr0,v30,0"
-func_check +3424 "xststdcqp cr7,v30,0"
-func_check +3428 "xststdcqp cr0,v31,127"
-func_check +3432 "xststdcqp cr7,v31,127"
-func_check +3436 "xsabsqp v10,v11"
-func_check +3440 "xsxexpqp v11,v12"
-func_check +3444 "xsnabsqp v12,v13"
-func_check +3448 "xsnegqp v13,v14"
-func_check +3452 "xsxsigqp v14,v15"
-func_check +3456 "xssqrtqp v15,v16"
-func_check +3460 "xssqrtqpo v16,v17"
-func_check +3464 "xscvqpuwz v17,v18"
-func_check +3468 "xscvudqp v18,v19"
-func_check +3472 "xscvqpswz v19,v20"
-func_check +3476 "xscvsdqp v20,v21"
-func_check +3480 "xscvqpudz v21,v22"
-func_check +3484 "xscvqpdp v22,v23"
-func_check +3488 "xscvqpdpo v23,v24"
-func_check +3492 "xscvdpqp v24,v25"
-func_check +3496 "xscvqpsdz v25,v26"
-func_check +3500 "xsiexpqp v26,v27,v28"
-func_check +3504 "vpermr v4,v5,v6,v7"
-func_check +3508 "vextractub v5,v6,0"
-func_check +3512 "vextractub v5,v6,15"
-func_check +3516 "vextractuh v6,v7,0"
-func_check +3520 "vextractuh v6,v7,15"
-func_check +3524 "vextractuw v7,v8,0"
-func_check +3528 "vextractuw v7,v8,15"
-func_check +3532 "vextractd v8,v9,0"
-func_check +3536 "vextractd v8,v9,15"
-func_check +3540 "vinsertb v9,v10,0"
-func_check +3544 "vinsertb v9,v10,15"
-func_check +3548 "vinserth v10,v11,0"
-func_check +3552 "vinserth v10,v11,15"
-func_check +3556 "vinsertw v11,v12,0"
-func_check +3560 "vinsertw v11,v12,15"
-func_check +3564 "vinsertd v12,v13,0"
-func_check +3568 "vinsertd v12,v13,15"
-func_check +3572 "mfvsrld r20,vs45"
-func_check +3576 "mtvsrws vs46,r21"
-func_check +3580 "mtvsrdd vs47,0,r23"
-func_check +3584 "mtvsrdd vs47,r22,r23"
-func_check +3588 "lxvx vs50,0,r11"
-func_check +3592 "lxvx vs0,r10,r11"
-func_check +3596 "lxvwsx vs51,0,r12"
-func_check +3600 "lxvwsx vs1,r10,r12"
-func_check +3604 "lxvh8x vs52,0,r13"
-func_check +3608 "lxvh8x vs2,r10,r13"
-func_check +3612 "lxvb16x vs53,0,r14"
-func_check +3616 "lxvb16x vs3,r10,r14"
-func_check +3620 "stxvx vs54,0,r15"
-func_check +3624 "stxvx vs4,r20,r15"
-func_check +3628 "stxvh8x vs55,0,r16"
-func_check +3632 "stxvh8x vs5,r20,r16"
-func_check +3636 "stxvb16x vs56,0,r17"
-func_check +3640 "stxvb16x vs6,r20,r17"
-func_check +3644 "xxextractuw vs4,vs5,0"
-func_check +3648 "xxextractuw vs40,vs50,15"
-func_check +3652 "xxspltib vs4,0"
-func_check +3656 "xxspltib vs41,255"
-func_check +3660 "xxinsertw vs5,vs6,0"
-func_check +3664 "xxinsertw vs50,vs60,15"
-func_check +3668 "xxbrh vs6,vs7"
-func_check +3672 "xxbrh vs56,vs57"
-func_check +3676 "xxbrw vs7,vs8"
-func_check +3680 "xxbrw vs57,vs58"
-func_check +3684 "xxbrd vs8,vs9"
-func_check +3688 "xxbrd vs58,vs59"
-func_check +3692 "xxbrq vs9,vs10"
-func_check +3696 "xxbrq vs59,vs60"
-func_check +3700 "lxsd v20,0\\(0\\)"
-func_check +3704 "lxsd v20,0\\(r10\\)"
-func_check +3708 "lxsd v20,8\\(0\\)"
-func_check +3712 "lxsd v20,8\\(r10\\)"
-func_check +3716 "lxsd v20,-8\\(0\\)"
-func_check +3720 "lxsd v20,-8\\(r10\\)"
-func_check +3724 "lxsd v20,32764\\(0\\)"
-func_check +3728 "lxsd v20,32764\\(r10\\)"
-func_check +3732 "lxsd v20,-32768\\(0\\)"
-func_check +3736 "lxsd v20,-32768\\(r10\\)"
-func_check +3740 "lxssp v30,0\\(0\\)"
-func_check +3744 "lxssp v30,0\\(r11\\)"
-func_check +3748 "lxssp v30,8\\(0\\)"
-func_check +3752 "lxssp v30,8\\(r11\\)"
-func_check +3756 "lxssp v30,-8\\(0\\)"
-func_check +3760 "lxssp v30,-8\\(r11\\)"
-func_check +3764 "lxssp v30,32764\\(0\\)"
-func_check +3768 "lxssp v30,32764\\(r11\\)"
-func_check +3772 "lxssp v30,-32768\\(0\\)"
-func_check +3776 "lxssp v30,-32768\\(r11\\)"
-func_check +3780 "lxv vs40,0\\(0\\)"
-func_check +3784 "lxv vs40,0\\(r12\\)"
-func_check +3788 "lxv vs40,16\\(0\\)"
-func_check +3792 "lxv vs40,16\\(r12\\)"
-func_check +3796 "lxv vs40,-16\\(0\\)"
-func_check +3800 "lxv vs10,-16\\(r12\\)"
-func_check +3804 "lxv vs10,32752\\(0\\)"
-func_check +3808 "lxv vs10,32752\\(r12\\)"
-func_check +3812 "lxv vs10,-32768\\(0\\)"
-func_check +3816 "lxv vs10,-32768\\(r12\\)"
-func_check +3820 "stxsd v21,0\\(0\\)"
-func_check +3824 "stxsd v21,0\\(r10\\)"
-func_check +3828 "stxsd v21,8\\(0\\)"
-func_check +3832 "stxsd v21,8\\(r10\\)"
-func_check +3836 "stxsd v21,-8\\(0\\)"
-func_check +3840 "stxsd v21,-8\\(r10\\)"
-func_check +3844 "stxsd v21,32764\\(0\\)"
-func_check +3848 "stxsd v21,32764\\(r10\\)"
-func_check +3852 "stxsd v21,-32768\\(0\\)"
-func_check +3856 "stxsd v21,-32768\\(r10\\)"
-func_check +3860 "stxssp v31,0\\(0\\)"
-func_check +3864 "stxssp v31,0\\(r11\\)"
-func_check +3868 "stxssp v31,8\\(0\\)"
-func_check +3872 "stxssp v31,8\\(r11\\)"
-func_check +3876 "stxssp v31,-8\\(0\\)"
-func_check +3880 "stxssp v31,-8\\(r11\\)"
-func_check +3884 "stxssp v31,32764\\(0\\)"
-func_check +3888 "stxssp v31,32764\\(r11\\)"
-func_check +3892 "stxssp v31,-32768\\(0\\)"
-func_check +3896 "stxssp v31,-32768\\(r11\\)"
-func_check +3900 "stxv vs41,0\\(0\\)"
-func_check +3904 "stxv vs41,0\\(r12\\)"
-func_check +3908 "stxv vs41,16\\(0\\)"
-func_check +3912 "stxv vs41,16\\(r12\\)"
-func_check +3916 "stxv vs41,-16\\(0\\)"
-func_check +3920 "stxv vs11,-16\\(r12\\)"
-func_check +3924 "stxv vs11,32752\\(0\\)"
-func_check +3928 "stxv vs11,32752\\(r12\\)"
-func_check +3932 "stxv vs11,-32768\\(0\\)"
-func_check +3936 "stxv vs11,-32768\\(r12\\)"
-func_check +3940 "xxperm vs20,vs22,vs24"
-func_check +3944 "xxperm vs40,vs42,vs44"
-func_check +3948 "xxpermr vs21,vs23,vs25"
-func_check +3952 "xxpermr vs41,vs43,vs45"
-func_check +3956 "extswsli r12,r20,0"
-func_check +3960 "extswsli r12,r20,1"
-func_check +3964 "extswsli r12,r20,63"
-func_check +3968 "extswsli\. r13,r21,0"
-func_check +3972 "extswsli\. r13,r21,1"
-func_check +3976 "extswsli\. r13,r21,63"
-func_check +3980 "vrlwmi v14,v22,v23"
-func_check +3984 "vrldmi v15,v23,v24"
-func_check +3988 "vrlwnm v16,v24,v25"
-func_check +3992 "vrldnm v17,v25,v26"
-func_check +3996 "vbpermd v18,v26,v27"
-func_check +4000 "vnegw v19,v20"
-func_check +4004 "vnegd v20,v21"
-func_check +4008 "vprtybw v21,v22"
-func_check +4012 "vprtybd v22,v23"
-func_check +4016 "vprtybq v23,v24"
-func_check +4020 "vextsb2w v24,v25"
-func_check +4024 "vextsh2w v25,v26"
-func_check +4028 "vextsb2d v26,v27"
-func_check +4032 "vextsh2d v27,v28"
-func_check +4036 "vextsw2d v28,v29"
-func_check +4040 "vctzb v29,v30"
-func_check +4044 "vctzh v30,v31"
-func_check +4048 "vctzw v31,v30"
-func_check +4052 "vctzd v30,v29"
-func_check +4056 "lxsibzx vs10,0,r20"
-func_check +4060 "lxsibzx vs50,r10,r20"
-func_check +4064 "lxsihzx vs11,0,r21"
-func_check +4068 "lxsihzx vs51,r11,r21"
-func_check +4072 "stxsibx vs12,0,r22"
-func_check +4076 "stxsibx vs52,r12,r22"
-func_check +4080 "stxsihx vs13,0,r23"
-func_check +4084 "stxsihx vs53,r13,r23"
-func_check +4088 "maddhd r10,r11,r12,r13"
-func_check +4092 "maddhdu r20,r21,r22,r23"
-func_check +4096 "maddld r2,r3,r4,r5"
-func_check +4100 "xscmpexpdp cr0,vs10,vs20"
-func_check +4104 "xscmpexpdp cr7,vs40,vs50"
-func_check +4108 "xsiexpdp vs41,r11,r21"
-func_check +4112 "xststdcdp cr0,vs11,127"
-func_check +4116 "xststdcdp cr7,vs41,127"
-func_check +4120 "xststdcsp cr0,vs11,127"
-func_check +4124 "xststdcsp cr7,vs41,127"
-func_check +4128 "xsxexpdp r13,vs43"
-func_check +4132 "xsxsigdp r14,vs44"
-func_check +4136 "xviexpdp vs45,vs46,vs47"
-func_check +4140 "xviexpsp vs46,vs47,vs48"
-func_check +4144 "xvtstdcdp vs54,vs55,0"
-func_check +4148 "xvtstdcdp vs54,vs55,127"
-func_check +4152 "xvtstdcsp vs55,vs56,0"
-func_check +4156 "xvtstdcsp vs55,vs56,127"
-func_check +4160 "xvxexpdp vs57,vs58"
-func_check +4164 "xvxexpsp vs58,vs59"
-func_check +4168 "xvxsigdp vs59,vs60"
-func_check +4172 "xvxsigsp vs60,vs61"
-func_check +4176 "cmpeqb cr0,r6,r7"
-func_check +4180 "cmpeqb cr7,r6,r7"
-func_check +4184 "cmprb cr0,0,r8,r9"
-func_check +4188 "cmprb cr7,0,r8,r9"
-func_check +4192 "cmprb cr0,1,r8,r9"
-func_check +4196 "cmprb cr7,1,r8,r9"
-func_check +4200 "setb r15,cr0"
-func_check +4204 "setb r15,cr7"
-func_check +4208 "lxvl vs26,0,r10"
-func_check +4212 "lxvl vs56,r20,r10"
-func_check +4216 "stxvl vs27,0,r11"
-func_check +4220 "stxvl vs57,r21,r11"
-func_check +4224 "vclzlsbb r20,v30"
-func_check +4228 "vctzlsbb r21,v31"
-func_check +4232 "vcmpneb v10,v11,v12"
-func_check +4236 "vcmpneb\. v20,v21,v22"
-func_check +4240 "vcmpneh v11,v12,v13"
-func_check +4244 "vcmpneh\. v21,v22,v23"
-func_check +4248 "vcmpnew v12,v13,v14"
-func_check +4252 "vcmpnew\. v22,v23,v24"
-func_check +4256 "vcmpnezb v13,v14,v15"
-func_check +4260 "vcmpnezb\. v23,v24,v25"
-func_check +4264 "vcmpnezh v14,v15,v16"
-func_check +4268 "vcmpnezh\. v24,v25,v26"
-func_check +4272 "vcmpnezw v15,v16,v17"
-func_check +4276 "vcmpnezw\. v25,v26,v27"
-func_check +4280 "vextublx r16,r17,v10"
-func_check +4284 "vextubrx r17,r18,v11"
-func_check +4288 "vextuhlx r18,r19,v12"
-func_check +4292 "vextuhrx r19,r20,v13"
-func_check +4296 "vextuwlx r20,r21,v14"
-func_check +4300 "vextuwrx r21,r22,v15"
-func_check +4304 "dtstsfi cr0,0,f3"
-func_check +4308 "dtstsfi cr7,63,f3"
-func_check +4312 "dtstsfiq cr0,0,f4"
-func_check +4316 "dtstsfiq cr7,63,f4"
-func_check +4320 "xscvhpdp vs40,vs50"
-func_check +4324 "xscvdphp vs41,vs51"
-func_check +4328 "xvcvhpsp vs42,vs52"
-func_check +4332 "xvcvsphp vs43,vs53"
-func_check +4336 "addpcis r3,0"
-func_check +4340 "addpcis r3,0"
-func_check +4344 "addpcis r4,1"
-func_check +4348 "addpcis r4,1"
-func_check +4352 "addpcis r5,-2"
-func_check +4356 "addpcis r5,-2"
-func_check +4360 "addpcis r6,32767"
-func_check +4364 "addpcis r6,32767"
-func_check +4368 "addpcis r7,-32768"
-func_check +4372 "addpcis r7,-32768"
-func_check +4376 "slbsync"
-func_check +4380 "slbieg r10,r11"
-func_check +4384 "slbmfee r3,r4"
-func_check +4388 "slbmfee r3,r4"
-func_check +4392 "slbmfee r3,r4,1"
-func_check +4396 "slbmfev r4,r5"
-func_check +4400 "slbmfev r4,r5"
-func_check +4404 "slbmfev r4,r5,1"
-func_check +4408 "tlbie r3,r4"
-func_check +4412 "tlbie r3,r4"
-func_check +4416 "tlbie r3,r4,3,1,1"
-func_check +4420 "tlbiel r3"
-func_check +4424 "tlbiel r3"
-func_check +4428 "tlbiel r3,r4,3,1,1"
-func_check +4432 "copy r12,r13"
-func_check +4436 "paste\. r10,r11"
-func_check +4440 "cpabort"
-func_check +4444 "hwsync"
-func_check +4448 "hwsync"
-func_check +4452 "hwsync"
-func_check +4456 "lwsync"
-func_check +4460 "lwsync"
-func_check +4464 "ptesync"
-func_check +4468 "ptesync"
-func_check +4472 "ldat r20,0,0"
-func_check +4476 "ldat r20,r10,28"
-func_check +4480 "lwat r21,0,0"
-func_check +4484 "lwat r21,r11,28"
-func_check +4488 "stdat r22,0,0"
-func_check +4492 "stdat r22,r12,28"
-func_check +4496 "stwat r23,0,0"
-func_check +4500 "stwat r23,r13,28"
-func_check +4504 "urfid"
-func_check +4508 "rmieg r30"
-func_check +4512 "ldmx r10,0,r15"
-func_check +4516 "ldmx r10,r3,r15"
-func_check +4520 "stop"
-func_check +4524 "wait"
-func_check +4528 "wait"
-func_check +4532 "darn r3,0"
-func_check +4536 "darn r3,1"
-func_check +4540 "darn r3,2"
-func_check +4544 "mcrxrx cr0"
-func_check +4548 "mcrxrx cr7"
-func_check +4552 "vslv v20,v21,v22"
-func_check +4556 "vsrv v23,v24,v25"
-func_check +4560 "msgsync"
-func_check +4564 "xscmpeqdp vs30,vs40,vs50"
-func_check +4568 "xscmpgtdp vs31,vs41,vs51"
-func_check +4572 "xscmpgedp vs32,vs42,vs52"
-func_check +4576 "xsmincdp vs34,vs44,vs54"
-func_check +4580 "xsmaxcdp vs35,vs45,vs55"
-func_check +4584 "xsminjdp vs36,vs46,vs56"
-func_check +4588 "xsmaxjdp vs37,vs47,vs57"
-func_check +4592 "vmsumudm v20,v21,v22,v23"
-func_check +4596 "addex r11,r12,r13,0"
-func_check +4600 "addex r11,r12,r13,1"
-func_check +4604 "addex r11,r12,r13,2"
-func_check +4608 "mffs f25"
-func_check +4612 "mffs\. f25"
-func_check +4616 "mffsce f26"
-func_check +4620 "mffscdrn f27,f20"
-func_check +4624 "mffscdrni f28,0"
-func_check +4628 "mffscdrni f28,7"
-func_check +4632 "mffscrn f29,f21"
-func_check +4636 "mffscrni f30,0"
-func_check +4640 "mffscrni f30,3"
-func_check +4644 "mffsl f31"
-func_check +4648 "slbiag r10"
-
-## altivec3.d
-func_check +4652 "vmul10cuq v11,v30"
-func_check +4656 "vcmpneb v30,v1,v23"
-func_check +4660 "vpermr v30,v19,v30,v29"
-func_check +4664 "vmul10ecuq v20,v20,v17"
-func_check +4668 "vcmpneh v27,v19,v31"
-func_check +4672 "vrlwmi v6,v9,v23"
-func_check +4676 "vcmpnew v22,v26,v1"
-func_check +4680 "vrldmi v24,v30,v25"
-func_check +4684 "vcmpnezb v19,v29,v22"
-func_check +4688 "vcmpnezh v8,v23,v19"
-func_check +4692 "vrlwnm v27,v24,v11"
-func_check +4696 "vcmpnezw v21,v13,v10"
-func_check +4700 "vrldnm v5,v20,v29"
-func_check +4704 "vmul10uq v30,v19"
-func_check +4708 "vextractub v24,v21,12"
-func_check +4712 "vmul10euq v0,v19,v28"
-func_check +4716 "vextractuh v10,v3,12"
-func_check +4720 "vextractuw v28,v12,7"
-func_check +4724 "vextractd v30,v27,1"
-func_check +4728 "vinsertb v25,v31,4"
-func_check +4732 "bcdcpsgn\. v21,v14,v30"
-func_check +4736 "vinserth v22,v18,5"
-func_check +4740 "vinsertw v29,v22,1"
-func_check +4744 "vinsertd v29,v13,7"
-func_check +4748 "vcmpneb\. v22,v25,v8"
-func_check +4752 "vcmpneh\. v16,v15,v21"
-func_check +4756 "bcdus\. v22,v21,v31"
-func_check +4760 "vcmpnew\. v1,v12,v12"
-func_check +4764 "bcds\. v5,v3,v8,1"
-func_check +4768 "bcdtrunc\. v27,v22,v1,0"
-func_check +4772 "vcmpnezb\. v2,v26,v0"
-func_check +4776 "bcdutrunc\. v26,v14,v7"
-func_check +4780 "vcmpnezh\. v16,v5,v12"
-func_check +4784 "bcdctsq\. v24,v5"
-func_check +4788 "bcdcfsq\. v7,v0,0"
-func_check +4792 "bcdctz\. v30,v12,1"
-func_check +4796 "bcdctn\. v17,v23"
-func_check +4800 "bcdcfz\. v4,v15,1"
-func_check +4804 "bcdcfn\. v29,v5,1"
-func_check +4808 "bcdsetsgn\. v27,v12,0"
-func_check +4812 "vcmpnezw\. v14,v28,v25"
-func_check +4816 "bcdsr\. v2,v2,v6,1"
-func_check +4820 "vbpermd v25,v0,v5"
-func_check +4824 "vclzlsbb r28,v25"
-func_check +4828 "vctzlsbb r2,v24"
-func_check +4832 "vnegw v21,v11"
-func_check +4836 "vnegd v17,v27"
-func_check +4840 "vprtybw v31,v23"
-func_check +4844 "vprtybd v21,v23"
-func_check +4848 "vprtybq v21,v18"
-func_check +4852 "vextsb2w v30,v4"
-func_check +4856 "vextsh2w v3,v26"
-func_check +4860 "vextsb2d v11,v17"
-func_check +4864 "vextsh2d v5,v10"
-func_check +4868 "vextsw2d v13,v25"
-func_check +4872 "vctzb v25,v2"
-func_check +4876 "vctzh v0,v3"
-func_check +4880 "vctzw v22,v6"
-func_check +4884 "vctzd v26,v24"
-func_check +4888 "vextublx r6,r31,v2"
-func_check +4892 "vextuhlx r13,r0,v18"
-func_check +4896 "vextuwlx r14,r30,v31"
-func_check +4900 "vsrv v15,v12,v14"
-func_check +4904 "vextubrx r20,r10,v30"
-func_check +4908 "vslv v21,v21,v2"
-func_check +4912 "vextuhrx r15,r9,v1"
-func_check +4916 "vextuwrx r21,r17,v16"
-func_check +4920 "vmsumudm v20,v21,v22,v23"
-
-## vsx3.d
-func_check +4924 "lxvx vs34,r6,r25"
-func_check +4928 "lxvx vs20,0,r10"
-func_check +4932 "lxvl vs20,r24,r10"
-func_check +4936 "lxvl vs54,0,r29"
-func_check +4940 "lxvll vs24,r20,r19"
-func_check +4944 "lxvll vs34,0,r14"
-func_check +4948 "mfvsrld r2,vs22"
-func_check +4952 "lxvwsx vs58,r26,r25"
-func_check +4956 "lxvwsx vs55,0,r29"
-func_check +4960 "stxvx vs14,r21,r4"
-func_check +4964 "stxvx vs30,0,r22"
-func_check +4968 "stxvl vs0,r26,r4"
-func_check +4972 "stxvl vs37,0,r22"
-func_check +4976 "mtvsrws vs24,r10"
-func_check +4980 "stxvll vs30,r21,r15"
-func_check +4984 "stxvll vs39,0,r14"
-func_check +4988 "mtvsrdd vs12,r6,r5"
-func_check +4992 "mtvsrdd vs38,0,r21"
-func_check +4996 "lxsibzx vs59,r28,r6"
-func_check +5000 "lxsibzx vs30,0,r8"
-func_check +5004 "lxvh8x vs42,r23,r17"
-func_check +5008 "lxvh8x vs36,0,r5"
-func_check +5012 "lxsihzx vs12,r9,r11"
-func_check +5016 "lxsihzx vs49,0,r13"
-func_check +5020 "lxvb16x vs37,r3,r19"
-func_check +5024 "lxvb16x vs0,0,r30"
-func_check +5028 "stxsibx vs2,r30,r6"
-func_check +5032 "stxsibx vs12,0,r13"
-func_check +5036 "stxvh8x vs16,r29,r8"
-func_check +5040 "stxvh8x vs55,0,r10"
-func_check +5044 "stxsihx vs34,r2,r23"
-func_check +5048 "stxsihx vs60,0,r23"
-func_check +5052 "stxvb16x vs23,r14,r12"
-func_check +5056 "stxvb16x vs19,0,r5"
-func_check +5060 "lxsd v24,0\\(0\\)"
-func_check +5064 "lxsd v15,16\\(r21\\)"
-func_check +5068 "lxssp v6,0\\(0\\)"
-func_check +5072 "lxssp v23,16\\(r9\\)"
-func_check +5076 "xscmpeqdp vs18,vs51,vs33"
-func_check +5080 "xscmpgtdp vs2,vs26,vs34"
-func_check +5084 "xscmpgedp vs5,vs26,vs20"
-func_check +5088 "xxperm vs44,vs10,vs43"
-func_check +5092 "xxpermr vs41,vs20,vs5"
-func_check +5096 "xscmpexpdp cr4,vs18,vs55"
-func_check +5100 "xxextractuw vs23,vs37,3"
-func_check +5104 "xxspltib vs54,235"
-func_check +5108 "xxinsertw vs15,vs30,4"
-func_check +5112 "xsmaxcdp vs12,vs11,vs7"
-func_check +5116 "xsmincdp vs32,vs25,vs24"
-func_check +5120 "xsmaxjdp vs25,vs53,vs12"
-func_check +5124 "xststdcsp cr2,vs36,127"
-func_check +5128 "xsminjdp vs32,vs21,vs45"
-func_check +5132 "xsxexpdp r17,vs50"
-func_check +5136 "xsxsigdp r7,vs40"
-func_check +5140 "xscvhpdp vs54,vs34"
-func_check +5144 "xscvdphp vs58,vs54"
-func_check +5148 "xststdcdp cr0,vs38,127"
-func_check +5152 "xvtstdcsp vs56,vs53,127"
-func_check +5156 "xviexpsp vs54,vs20,vs52"
-func_check +5160 "xsiexpdp vs57,r28,r29"
-func_check +5164 "xvxexpdp vs1,vs20"
-func_check +5168 "xvxsigdp vs54,vs59"
-func_check +5172 "xxbrh vs18,vs37"
-func_check +5176 "xvxexpsp vs14,vs1"
-func_check +5180 "xvxsigsp vs52,vs13"
-func_check +5184 "xxbrw vs19,vs5"
-func_check +5188 "xxbrd vs51,vs55"
-func_check +5192 "xvcvhpsp vs35,vs17"
-func_check +5196 "xvcvsphp vs15,vs45"
-func_check +5200 "xxbrq vs17,vs31"
-func_check +5204 "xvtstdcdp vs16,vs12,127"
-func_check +5208 "xviexpdp vs27,vs9,vs8"
-func_check +5212 "lxv vs4,0\\(0\\)"
-func_check +5216 "lxv vs40,16\\(r20\\)"
-func_check +5220 "stxv vs50,0\\(0\\)"
-func_check +5224 "stxv vs8,16\\(r16\\)"
-func_check +5228 "stxsd v3,0\\(0\\)"
-func_check +5232 "stxsd v17,16\\(r2\\)"
-func_check +5236 "stxssp v13,0\\(0\\)"
-func_check +5240 "stxssp v17,16\\(r13\\)"
-func_check +5244 "xsaddqp v8,v10,v18"
-func_check +5248 "xsaddqpo v5,v1,v29"
-func_check +5252 "xsrqpi 0,v12,v18,3"
-func_check +5256 "xsrqpix 1,v31,v19,0"
-func_check +5260 "xsmulqp v14,v1,v6"
-func_check +5264 "xsmulqpo v17,v7,v27"
-func_check +5268 "xsrqpxp 0,v4,v11,0"
-func_check +5272 "xscpsgnqp v29,v23,v28"
-func_check +5276 "xscmpoqp cr7,v13,v27"
-func_check +5280 "xscmpexpqp cr5,v21,v6"
-func_check +5284 "xsmaddqp v2,v19,v4"
-func_check +5288 "xsmaddqpo v30,v7,v16"
-func_check +5292 "xsmsubqp v21,v30,v15"
-func_check +5296 "xsmsubqpo v12,v17,v30"
-func_check +5300 "xsnmaddqp v6,v30,v12"
-func_check +5304 "xsnmaddqpo v12,v22,v12"
-func_check +5308 "xsnmsubqp v10,v29,v27"
-func_check +5312 "xsnmsubqpo v29,v29,v13"
-func_check +5316 "xssubqp v19,v27,v4"
-func_check +5320 "xssubqpo v13,v8,v1"
-func_check +5324 "xsdivqp v8,v3,v27"
-func_check +5328 "xsdivqpo v24,v20,v27"
-func_check +5332 "xscmpuqp cr7,v14,v4"
-func_check +5336 "xststdcqp cr4,v2,127"
-func_check +5340 "xsabsqp v31,v22"
-func_check +5344 "xsxexpqp v25,v3"
-func_check +5348 "xsnabsqp v10,v28"
-func_check +5352 "xsnegqp v19,v31"
-func_check +5356 "xsxsigqp v11,v13"
-func_check +5360 "xssqrtqp v13,v14"
-func_check +5364 "xssqrtqpo v1,v27"
-func_check +5368 "xscvqpuwz v3,v7"
-func_check +5372 "xscvudqp v20,v18"
-func_check +5376 "xscvqpswz v29,v29"
-func_check +5380 "xscvsdqp v2,v28"
-func_check +5384 "xscvqpudz v23,v4"
-func_check +5388 "xscvqpdp v3,v20"
-func_check +5392 "xscvqpdpo v1,v3"
-func_check +5396 "xscvdpqp v19,v12"
-func_check +5400 "xscvqpsdz v13,v4"
-func_check +5404 "xsiexpqp v7,v24,v7"
diff --git a/gdb/testsuite/gdb.arch/powerpc-power.s b/gdb/testsuite/gdb.arch/powerpc-power.s
deleted file mode 100644
index 91dbac7..0000000
--- a/gdb/testsuite/gdb.arch/powerpc-power.s
+++ /dev/null
@@ -1,1389 +0,0 @@
-/* This testcase is part of GDB, the GNU debugger.
-
- Copyright 2014-2017 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that 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.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
- .text
- .globl func
-func:
-
-## power7.d
- .long 0x7c642e98 /* <+0>: lxvd2x vs3,r4,r5 */
- .long 0x7d642e99 /* <+4>: lxvd2x vs43,r4,r5 */
- .long 0x7c642f98 /* <+8>: stxvd2x vs3,r4,r5 */
- .long 0x7d642f99 /* <+12>: stxvd2x vs43,r4,r5 */
- .long 0xf0642850 /* <+16>: xxmrghd vs3,vs4,vs5 */
- .long 0xf16c6857 /* <+20>: xxmrghd vs43,vs44,vs45 */
- .long 0xf0642b50 /* <+24>: xxmrgld vs3,vs4,vs5 */
- .long 0xf16c6b57 /* <+28>: xxmrgld vs43,vs44,vs45 */
- .long 0xf0642850 /* <+32>: xxmrghd vs3,vs4,vs5 */
- .long 0xf16c6857 /* <+36>: xxmrghd vs43,vs44,vs45 */
- .long 0xf0642b50 /* <+40>: xxmrgld vs3,vs4,vs5 */
- .long 0xf16c6b57 /* <+44>: xxmrgld vs43,vs44,vs45 */
- .long 0xf0642950 /* <+48>: xxpermdi vs3,vs4,vs5,1 */
- .long 0xf16c6957 /* <+52>: xxpermdi vs43,vs44,vs45,1 */
- .long 0xf0642a50 /* <+56>: xxpermdi vs3,vs4,vs5,2 */
- .long 0xf16c6a57 /* <+60>: xxpermdi vs43,vs44,vs45,2 */
- .long 0xf0642780 /* <+64>: xvmovdp vs3,vs4 */
- .long 0xf16c6787 /* <+68>: xvmovdp vs43,vs44 */
- .long 0xf0642780 /* <+72>: xvmovdp vs3,vs4 */
- .long 0xf16c6787 /* <+76>: xvmovdp vs43,vs44 */
- .long 0xf0642f80 /* <+80>: xvcpsgndp vs3,vs4,vs5 */
- .long 0xf16c6f87 /* <+84>: xvcpsgndp vs43,vs44,vs45 */
- .long 0x4c000324 /* <+88>: doze */
- .long 0x4c000364 /* <+92>: nap */
- .long 0x4c0003a4 /* <+96>: sleep */
- .long 0x4c0003e4 /* <+100>: rvwinkle */
- .long 0x7c830134 /* <+104>: prtyw r3,r4 */
- .long 0x7dcd0174 /* <+108>: prtyd r13,r14 */
- .long 0x7d5c02a6 /* <+112>: mfcfar r10 */
- .long 0x7d7c03a6 /* <+116>: mtcfar r11 */
- .long 0x7c832bf8 /* <+120>: cmpb r3,r4,r5 */
- .long 0x7d4b662a /* <+124>: lwzcix r10,r11,r12 */
- .long 0xee119004 /* <+128>: dadd f16,f17,f18 */
- .long 0xfe96c004 /* <+132>: daddq f20,f22,f24 */
- .long 0x7c60066c /* <+136>: dss 3 */
- .long 0x7e00066c /* <+140>: dssall */
- .long 0x7c2522ac /* <+144>: dst r5,r4,1 */
- .long 0x7e083aac /* <+148>: dstt r8,r7,0 */
- .long 0x7c6532ec /* <+152>: dstst r5,r6,3 */
- .long 0x7e442aec /* <+156>: dststt r4,r5,2 */
- .long 0x7d4b6356 /* <+160>: divwe r10,r11,r12 */
- .long 0x7d6c6b57 /* <+164>: divwe. r11,r12,r13 */
- .long 0x7d8d7756 /* <+168>: divweo r12,r13,r14 */
- .long 0x7dae7f57 /* <+172>: divweo. r13,r14,r15 */
- .long 0x7d4b6316 /* <+176>: divweu r10,r11,r12 */
- .long 0x7d6c6b17 /* <+180>: divweu. r11,r12,r13 */
- .long 0x7d8d7716 /* <+184>: divweuo r12,r13,r14 */
- .long 0x7dae7f17 /* <+188>: divweuo. r13,r14,r15 */
- .long 0x7e27d9f8 /* <+192>: bpermd r7,r17,r27 */
- .long 0x7e8a02f4 /* <+196>: popcntw r10,r20 */
- .long 0x7e8a03f4 /* <+200>: popcntd r10,r20 */
- .long 0x7e95b428 /* <+204>: ldbrx r20,r21,r22 */
- .long 0x7e95b528 /* <+208>: stdbrx r20,r21,r22 */
- .long 0x7d4056ee /* <+212>: lfiwzx f10,0,r10 */
- .long 0x7d4956ee /* <+216>: lfiwzx f10,r9,r10 */
- .long 0xec802e9c /* <+220>: fcfids f4,f5 */
- .long 0xec802e9d /* <+224>: fcfids. f4,f5 */
- .long 0xec802f9c /* <+228>: fcfidus f4,f5 */
- .long 0xec802f9d /* <+232>: fcfidus. f4,f5 */
- .long 0xfc80291c /* <+236>: fctiwu f4,f5 */
- .long 0xfc80291d /* <+240>: fctiwu. f4,f5 */
- .long 0xfc80291e /* <+244>: fctiwuz f4,f5 */
- .long 0xfc80291f /* <+248>: fctiwuz. f4,f5 */
- .long 0xfc802f5c /* <+252>: fctidu f4,f5 */
- .long 0xfc802f5d /* <+256>: fctidu. f4,f5 */
- .long 0xfc802f5e /* <+260>: fctiduz f4,f5 */
- .long 0xfc802f5f /* <+264>: fctiduz. f4,f5 */
- .long 0xfc802f9c /* <+268>: fcfidu f4,f5 */
- .long 0xfc802f9d /* <+272>: fcfidu. f4,f5 */
- .long 0xfc0a5900 /* <+276>: ftdiv cr0,f10,f11 */
- .long 0xff8a5900 /* <+280>: ftdiv cr7,f10,f11 */
- .long 0xfc005140 /* <+284>: ftsqrt cr0,f10 */
- .long 0xff805140 /* <+288>: ftsqrt cr7,f10 */
- .long 0x7e084a2c /* <+292>: dcbtt r8,r9 */
- .long 0x7e0849ec /* <+296>: dcbtstt r8,r9 */
- .long 0xed406644 /* <+300>: dcffix f10,f12 */
- .long 0xee80b645 /* <+304>: dcffix. f20,f22 */
- .long 0xfdc07830 /* <+308>: fre f14,f15 */
- .long 0xfdc07831 /* <+312>: fre. f14,f15 */
- .long 0xedc07830 /* <+316>: fres f14,f15 */
- .long 0xedc07831 /* <+320>: fres. f14,f15 */
- .long 0xfdc07834 /* <+324>: frsqrte f14,f15 */
- .long 0xfdc07835 /* <+328>: frsqrte. f14,f15 */
- .long 0xedc07834 /* <+332>: frsqrtes f14,f15 */
- .long 0xedc07835 /* <+336>: frsqrtes. f14,f15 */
- .long 0x7c43271e /* <+340>: isel r2,r3,r4,28 */
- .long 0x7f7bdb78 /* <+344>: yield */
- .long 0x7f7bdb78 /* <+348>: yield */
- .long 0x60420000 /* <+352>: ori r2,r2,0 */
- .long 0x60000000 /* <+356>: nop */
- .long 0x60000000 /* <+360>: nop */
- .long 0x60420000 /* <+364>: ori r2,r2,0 */
- .long 0x7fbdeb78 /* <+368>: mdoio */
- .long 0x7fbdeb78 /* <+372>: mdoio */
- .long 0x7fdef378 /* <+376>: mdoom */
- .long 0x7fdef378 /* <+380>: mdoom */
- .long 0x7d40e2a6 /* <+384>: mfppr r10 */
- .long 0x7d62e2a6 /* <+388>: mfppr32 r11 */
- .long 0x7d80e3a6 /* <+392>: mtppr r12 */
- .long 0x7da2e3a6 /* <+396>: mtppr32 r13 */
- .long 0x7d605264 /* <+400>: tlbie r10,r11 */
-
-## altivec.d
- .long 0x7c60066c /* <+404>: dss 3 */
- .long 0x7e00066c /* <+408>: dssall */
- .long 0x7c2522ac /* <+412>: dst r5,r4,1 */
- .long 0x7e083aac /* <+416>: dstt r8,r7,0 */
- .long 0x7c6532ec /* <+420>: dstst r5,r6,3 */
- .long 0x7e442aec /* <+424>: dststt r4,r5,2 */
- .long 0x7fd6c00e /* <+428>: lvebx v30,r22,r24 */
- .long 0x7ea0c00e /* <+432>: lvebx v21,0,r24 */
- .long 0x7d50104e /* <+436>: lvehx v10,r16,r2 */
- .long 0x7e80b84e /* <+440>: lvehx v20,0,r23 */
- .long 0x7e24908e /* <+444>: lvewx v17,r4,r18 */
- .long 0x7ee0408e /* <+448>: lvewx v23,0,r8 */
- .long 0x7cc0c80c /* <+452>: lvsl v6,0,r25 */
- .long 0x7c40300c /* <+456>: lvsl v2,0,r6 */
- .long 0x7ed0604c /* <+460>: lvsr v22,r16,r12 */
- .long 0x7c00e84c /* <+464>: lvsr v0,0,r29 */
- .long 0x7de56ace /* <+468>: lvxl v15,r5,r13 */
- .long 0x7e60bace /* <+472>: lvxl v19,0,r23 */
- .long 0x7ec110ce /* <+476>: lvx v22,r1,r2 */
- .long 0x7e4088ce /* <+480>: lvx v18,0,r17 */
- .long 0x7fe042a6 /* <+484>: mfvrsave r31 */
- .long 0x13000604 /* <+488>: mfvscr v24 */
- .long 0x7d4043a6 /* <+492>: mtvrsave r10 */
- .long 0x1000ce44 /* <+496>: mtvscr v25 */
- .long 0x7e5b510e /* <+500>: stvebx v18,r27,r10 */
- .long 0x7e00310e /* <+504>: stvebx v16,0,r6 */
- .long 0x7e2d814e /* <+508>: stvehx v17,r13,r16 */
- .long 0x7ee0a14e /* <+512>: stvehx v23,0,r20 */
- .long 0x7d73f98e /* <+516>: stvewx v11,r19,r31 */
- .long 0x7fe0098e /* <+520>: stvewx v31,0,r1 */
- .long 0x7f558bce /* <+524>: stvxl v26,r21,r17 */
- .long 0x7da0b3ce /* <+528>: stvxl v13,0,r22 */
- .long 0x7d7ff9ce /* <+532>: stvx v11,r31,r31 */
- .long 0x7fc081ce /* <+536>: stvx v30,0,r16 */
- .long 0x1307e180 /* <+540>: vaddcuw v24,v7,v28 */
- .long 0x107e580a /* <+544>: vaddfp v3,v30,v11 */
- .long 0x111c4b00 /* <+548>: vaddsbs v8,v28,v9 */
- .long 0x10e52340 /* <+552>: vaddshs v7,v5,v4 */
- .long 0x12dadb80 /* <+556>: vaddsws v22,v26,v27 */
- .long 0x120ee000 /* <+560>: vaddubm v16,v14,v28 */
- .long 0x10c1ca00 /* <+564>: vaddubs v6,v1,v25 */
- .long 0x10443040 /* <+568>: vadduhm v2,v4,v6 */
- .long 0x13554240 /* <+572>: vadduhs v26,v21,v8 */
- .long 0x13bf0880 /* <+576>: vadduwm v29,v31,v1 */
- .long 0x12ed2280 /* <+580>: vadduws v23,v13,v4 */
- .long 0x13d04c44 /* <+584>: vandc v30,v16,v9 */
- .long 0x106ddc04 /* <+588>: vand v3,v13,v27 */
- .long 0x10868d02 /* <+592>: vavgsb v4,v6,v17 */
- .long 0x12fc9d42 /* <+596>: vavgsh v23,v28,v19 */
- .long 0x110ffd82 /* <+600>: vavgsw v8,v15,v31 */
- .long 0x10c7cc02 /* <+604>: vavgub v6,v7,v25 */
- .long 0x13365442 /* <+608>: vavguh v25,v22,v10 */
- .long 0x1077ec82 /* <+612>: vavguw v3,v23,v29 */
- .long 0x11c613ca /* <+616>: vctsxs v14,v2,6 */
- .long 0x1134fb8a /* <+620>: vctuxs v9,v31,20 */
- .long 0x1303f34a /* <+624>: vcfsx v24,v30,3 */
- .long 0x123dab0a /* <+628>: vcfux v17,v21,29 */
- .long 0x125c03c6 /* <+632>: vcmpbfp v18,v28,v0 */
- .long 0x127a1fc6 /* <+636>: vcmpbfp. v19,v26,v3 */
- .long 0x120258c6 /* <+640>: vcmpeqfp v16,v2,v11 */
- .long 0x12ed6cc6 /* <+644>: vcmpeqfp. v23,v13,v13 */
- .long 0x13335006 /* <+648>: vcmpequb v25,v19,v10 */
- .long 0x124b1406 /* <+652>: vcmpequb. v18,v11,v2 */
- .long 0x11393846 /* <+656>: vcmpequh v9,v25,v7 */
- .long 0x11d8ac46 /* <+660>: vcmpequh. v14,v24,v21 */
- .long 0x130c2886 /* <+664>: vcmpequw v24,v12,v5 */
- .long 0x12700c86 /* <+668>: vcmpequw. v19,v16,v1 */
- .long 0x12f181c6 /* <+672>: vcmpgefp v23,v17,v16 */
- .long 0x127d8dc6 /* <+676>: vcmpgefp. v19,v29,v17 */
- .long 0x121c6ac6 /* <+680>: vcmpgtfp v16,v28,v13 */
- .long 0x11d83ec6 /* <+684>: vcmpgtfp. v14,v24,v7 */
- .long 0x12163306 /* <+688>: vcmpgtsb v16,v22,v6 */
- .long 0x104c7706 /* <+692>: vcmpgtsb. v2,v12,v14 */
- .long 0x1383eb46 /* <+696>: vcmpgtsh v28,v3,v29 */
- .long 0x12136f46 /* <+700>: vcmpgtsh. v16,v19,v13 */
- .long 0x11e02b86 /* <+704>: vcmpgtsw v15,v0,v5 */
- .long 0x12ad0786 /* <+708>: vcmpgtsw. v21,v13,v0 */
- .long 0x10aaf206 /* <+712>: vcmpgtub v5,v10,v30 */
- .long 0x10ed5606 /* <+716>: vcmpgtub. v7,v13,v10 */
- .long 0x130f8246 /* <+720>: vcmpgtuh v24,v15,v16 */
- .long 0x1335de46 /* <+724>: vcmpgtuh. v25,v21,v27 */
- .long 0x123b3286 /* <+728>: vcmpgtuw v17,v27,v6 */
- .long 0x1115de86 /* <+732>: vcmpgtuw. v8,v21,v27 */
- .long 0x102e0b4a /* <+736>: vcfsx v1,v1,14 */
- .long 0x10997bca /* <+740>: vctsxs v4,v15,25 */
- .long 0x138ebb8a /* <+744>: vctuxs v28,v23,14 */
- .long 0x10c0330a /* <+748>: vcfux v6,v6,0 */
- .long 0x1000418a /* <+752>: vexptefp v0,v8 */
- .long 0x12c0d9ca /* <+756>: vlogefp v22,v27 */
- .long 0x12f2916e /* <+760>: vmaddfp v23,v18,v5,v18 */
- .long 0x11addc0a /* <+764>: vmaxfp v13,v13,v27 */
- .long 0x11177102 /* <+768>: vmaxsb v8,v23,v14 */
- .long 0x12710142 /* <+772>: vmaxsh v19,v17,v0 */
- .long 0x1263b182 /* <+776>: vmaxsw v19,v3,v22 */
- .long 0x12fee002 /* <+780>: vmaxub v23,v30,v28 */
- .long 0x1134b842 /* <+784>: vmaxuh v9,v20,v23 */
- .long 0x12b30882 /* <+788>: vmaxuw v21,v19,v1 */
- .long 0x12cd2da0 /* <+792>: vmhaddshs v22,v13,v5,v22 */
- .long 0x13e01ca1 /* <+796>: vmhraddshs v31,v0,v3,v18 */
- .long 0x1055c44a /* <+800>: vminfp v2,v21,v24 */
- .long 0x12865302 /* <+804>: vminsb v20,v6,v10 */
- .long 0x125bd342 /* <+808>: vminsh v18,v27,v26 */
- .long 0x10640b82 /* <+812>: vminsw v3,v4,v1 */
- .long 0x10e06a02 /* <+816>: vminub v7,v0,v13 */
- .long 0x100c3242 /* <+820>: vminuh v0,v12,v6 */
- .long 0x10c30a82 /* <+824>: vminuw v6,v3,v1 */
- .long 0x107d1ea2 /* <+828>: vmladduhm v3,v29,v3,v26 */
- .long 0x12a5f80c /* <+832>: vmrghb v21,v5,v31 */
- .long 0x12b8004c /* <+836>: vmrghh v21,v24,v0 */
- .long 0x1200b08c /* <+840>: vmrghw v16,v0,v22 */
- .long 0x1031810c /* <+844>: vmrglb v1,v17,v16 */
- .long 0x11c8794c /* <+848>: vmrglh v14,v8,v15 */
- .long 0x13f5298c /* <+852>: vmrglw v31,v21,v5 */
- .long 0x13094c84 /* <+856>: vmr v24,v9 */
- .long 0x13094c84 /* <+860>: vmr v24,v9 */
- .long 0x10187de5 /* <+864>: vmsummbm v0,v24,v15,v23 */
- .long 0x10243e68 /* <+868>: vmsumshm v1,v4,v7,v25 */
- .long 0x11286fe9 /* <+872>: vmsumshs v9,v8,v13,v31 */
- .long 0x12ff67a4 /* <+876>: vmsumubm v23,v31,v12,v30 */
- .long 0x13a0d566 /* <+880>: vmsumuhm v29,v0,v26,v21 */
- .long 0x136ec967 /* <+884>: vmsumuhs v27,v14,v25,v5 */
- .long 0x11597308 /* <+888>: vmulesb v10,v25,v14 */
- .long 0x10324348 /* <+892>: vmulesh v1,v18,v8 */
- .long 0x122e4a08 /* <+896>: vmuleub v17,v14,v9 */
- .long 0x10ba4a48 /* <+900>: vmuleuh v5,v26,v9 */
- .long 0x12b23108 /* <+904>: vmulosb v21,v18,v6 */
- .long 0x10854148 /* <+908>: vmulosh v4,v5,v8 */
- .long 0x10499808 /* <+912>: vmuloub v2,v9,v19 */
- .long 0x13a52048 /* <+916>: vmulouh v29,v5,v4 */
- .long 0x110229af /* <+920>: vnmsubfp v8,v2,v6,v5 */
- .long 0x13e95504 /* <+924>: vnor v31,v9,v10 */
- .long 0x133ffd04 /* <+928>: vnot v25,v31 */
- .long 0x133ffd04 /* <+932>: vnot v25,v31 */
- .long 0x12e71484 /* <+936>: vor v23,v7,v2 */
- .long 0x101cb66b /* <+940>: vperm v0,v28,v22,v25 */
- .long 0x12198b0e /* <+944>: vpkpx v16,v25,v17 */
- .long 0x1190898e /* <+948>: vpkshss v12,v16,v17 */
- .long 0x1033b90e /* <+952>: vpkshus v1,v19,v23 */
- .long 0x132769ce /* <+956>: vpkswss v25,v7,v13 */
- .long 0x1098514e /* <+960>: vpkswus v4,v24,v10 */
- .long 0x113b600e /* <+964>: vpkuhum v9,v27,v12 */
- .long 0x12cac88e /* <+968>: vpkuhus v22,v10,v25 */
- .long 0x13d2004e /* <+972>: vpkuwum v30,v18,v0 */
- .long 0x10e3b0ce /* <+976>: vpkuwus v7,v3,v22 */
- .long 0x1300e10a /* <+980>: vrefp v24,v28 */
- .long 0x12209aca /* <+984>: vrfim v17,v19 */
- .long 0x1300ca0a /* <+988>: vrfin v24,v25 */
- .long 0x10602a8a /* <+992>: vrfip v3,v5 */
- .long 0x1100524a /* <+996>: vrfiz v8,v10 */
- .long 0x1352f004 /* <+1000>: vrlb v26,v18,v30 */
- .long 0x1211c844 /* <+1004>: vrlh v16,v17,v25 */
- .long 0x12fe4884 /* <+1008>: vrlw v23,v30,v9 */
- .long 0x1040914a /* <+1012>: vrsqrtefp v2,v18 */
- .long 0x128e92aa /* <+1016>: vsel v20,v14,v18,v10 */
- .long 0x13396104 /* <+1020>: vslb v25,v25,v12 */
- .long 0x112961ec /* <+1024>: vsldoi v9,v9,v12,7 */
- .long 0x11c25944 /* <+1028>: vslh v14,v2,v11 */
- .long 0x13c5340c /* <+1032>: vslo v30,v5,v6 */
- .long 0x12de49c4 /* <+1036>: vsl v22,v30,v9 */
- .long 0x135a1984 /* <+1040>: vslw v26,v26,v3 */
- .long 0x1026a20c /* <+1044>: vspltb v1,v20,6 */
- .long 0x1203924c /* <+1048>: vsplth v16,v18,3 */
- .long 0x1333030c /* <+1052>: vspltisb v25,-13 */
- .long 0x12ca034c /* <+1056>: vspltish v22,10 */
- .long 0x11ad038c /* <+1060>: vspltisw v13,13 */
- .long 0x1122928c /* <+1064>: vspltw v9,v18,2 */
- .long 0x11d60304 /* <+1068>: vsrab v14,v22,v0 */
- .long 0x118c9344 /* <+1072>: vsrah v12,v12,v18 */
- .long 0x10426b84 /* <+1076>: vsraw v2,v2,v13 */
- .long 0x10fb2a04 /* <+1080>: vsrb v7,v27,v5 */
- .long 0x10ebea44 /* <+1084>: vsrh v7,v11,v29 */
- .long 0x125efc4c /* <+1088>: vsro v18,v30,v31 */
- .long 0x1049e2c4 /* <+1092>: vsr v2,v9,v28 */
- .long 0x10190284 /* <+1096>: vsrw v0,v25,v0 */
- .long 0x13025580 /* <+1100>: vsubcuw v24,v2,v10 */
- .long 0x12d8a04a /* <+1104>: vsubfp v22,v24,v20 */
- .long 0x11566f00 /* <+1108>: vsubsbs v10,v22,v13 */
- .long 0x1311e740 /* <+1112>: vsubshs v24,v17,v28 */
- .long 0x115a0780 /* <+1116>: vsubsws v10,v26,v0 */
- .long 0x120bc400 /* <+1120>: vsububm v16,v11,v24 */
- .long 0x11750e00 /* <+1124>: vsububs v11,v21,v1 */
- .long 0x10ccc440 /* <+1128>: vsubuhm v6,v12,v24 */
- .long 0x13cb4e40 /* <+1132>: vsubuhs v30,v11,v9 */
- .long 0x12746c80 /* <+1136>: vsubuwm v19,v20,v13 */
- .long 0x12593680 /* <+1140>: vsubuws v18,v25,v6 */
- .long 0x132a9688 /* <+1144>: vsum2sws v25,v10,v18 */
- .long 0x11b0af08 /* <+1148>: vsum4sbs v13,v16,v21 */
- .long 0x12e82648 /* <+1152>: vsum4shs v23,v8,v4 */
- .long 0x138df608 /* <+1156>: vsum4ubs v28,v13,v30 */
- .long 0x12ca4788 /* <+1160>: vsumsws v22,v10,v8 */
- .long 0x1300734e /* <+1164>: vupkhpx v24,v14 */
- .long 0x1040b20e /* <+1168>: vupkhsb v2,v22 */
- .long 0x1200124e /* <+1172>: vupkhsh v16,v2 */
- .long 0x1140d3ce /* <+1176>: vupklpx v10,v26 */
- .long 0x11e0e28e /* <+1180>: vupklsb v15,v28 */
- .long 0x110042ce /* <+1184>: vupklsh v8,v8 */
- .long 0x13201cc4 /* <+1188>: vxor v25,v0,v3 */
-
-## vsd.d
- .long 0x7d0aa499 /* <+1192>: lxsdx vs40,r10,r20 */
- .long 0x7d0aa699 /* <+1196>: lxvd2x vs40,r10,r20 */
- .long 0x7d0aa299 /* <+1200>: lxvdsx vs40,r10,r20 */
- .long 0x7d0aa619 /* <+1204>: lxvw4x vs40,r10,r20 */
- .long 0x7d0aa599 /* <+1208>: stxsdx vs40,r10,r20 */
- .long 0x7d0aa799 /* <+1212>: stxvd2x vs40,r10,r20 */
- .long 0x7d0aa719 /* <+1216>: stxvw4x vs40,r10,r20 */
- .long 0xf100e567 /* <+1220>: xsabsdp vs40,vs60 */
- .long 0xf112e107 /* <+1224>: xsadddp vs40,vs50,vs60 */
- .long 0xf092e15e /* <+1228>: xscmpodp cr1,vs50,vs60 */
- .long 0xf092e11e /* <+1232>: xscmpudp cr1,vs50,vs60 */
- .long 0xf112e587 /* <+1236>: xscpsgndp vs40,vs50,vs60 */
- .long 0xf100e427 /* <+1240>: xscvdpsp vs40,vs60 */
- .long 0xf100e563 /* <+1244>: xscvdpsxds vs40,vs60 */
- .long 0xf100e163 /* <+1248>: xscvdpsxws vs40,vs60 */
- .long 0xf100e523 /* <+1252>: xscvdpuxds vs40,vs60 */
- .long 0xf100e123 /* <+1256>: xscvdpuxws vs40,vs60 */
- .long 0xf100e527 /* <+1260>: xscvspdp vs40,vs60 */
- .long 0xf100e5e3 /* <+1264>: xscvsxddp vs40,vs60 */
- .long 0xf100e5a3 /* <+1268>: xscvuxddp vs40,vs60 */
- .long 0xf112e1c7 /* <+1272>: xsdivdp vs40,vs50,vs60 */
- .long 0xf112e10f /* <+1276>: xsmaddadp vs40,vs50,vs60 */
- .long 0xf112e14f /* <+1280>: xsmaddmdp vs40,vs50,vs60 */
- .long 0xf112e507 /* <+1284>: xsmaxdp vs40,vs50,vs60 */
- .long 0xf112e547 /* <+1288>: xsmindp vs40,vs50,vs60 */
- .long 0xf112e18f /* <+1292>: xsmsubadp vs40,vs50,vs60 */
- .long 0xf112e1cf /* <+1296>: xsmsubmdp vs40,vs50,vs60 */
- .long 0xf112e187 /* <+1300>: xsmuldp vs40,vs50,vs60 */
- .long 0xf100e5a7 /* <+1304>: xsnabsdp vs40,vs60 */
- .long 0xf100e5e7 /* <+1308>: xsnegdp vs40,vs60 */
- .long 0xf112e50f /* <+1312>: xsnmaddadp vs40,vs50,vs60 */
- .long 0xf112e54f /* <+1316>: xsnmaddmdp vs40,vs50,vs60 */
- .long 0xf112e58f /* <+1320>: xsnmsubadp vs40,vs50,vs60 */
- .long 0xf112e5cf /* <+1324>: xsnmsubmdp vs40,vs50,vs60 */
- .long 0xf100e127 /* <+1328>: xsrdpi vs40,vs60 */
- .long 0xf100e1af /* <+1332>: xsrdpic vs40,vs60 */
- .long 0xf100e1e7 /* <+1336>: xsrdpim vs40,vs60 */
- .long 0xf100e1a7 /* <+1340>: xsrdpip vs40,vs60 */
- .long 0xf100e167 /* <+1344>: xsrdpiz vs40,vs60 */
- .long 0xf100e16b /* <+1348>: xsredp vs40,vs60 */
- .long 0xf100e12b /* <+1352>: xsrsqrtedp vs40,vs60 */
- .long 0xf100e12f /* <+1356>: xssqrtdp vs40,vs60 */
- .long 0xf112e147 /* <+1360>: xssubdp vs40,vs50,vs60 */
- .long 0xf092e1ee /* <+1364>: xstdivdp cr1,vs50,vs60 */
- .long 0xf080e1aa /* <+1368>: xstsqrtdp cr1,vs60 */
- .long 0xf100e767 /* <+1372>: xvabsdp vs40,vs60 */
- .long 0xf100e667 /* <+1376>: xvabssp vs40,vs60 */
- .long 0xf112e307 /* <+1380>: xvadddp vs40,vs50,vs60 */
- .long 0xf112e207 /* <+1384>: xvaddsp vs40,vs50,vs60 */
- .long 0xf112e31f /* <+1388>: xvcmpeqdp vs40,vs50,vs60 */
- .long 0xf112e71f /* <+1392>: xvcmpeqdp. vs40,vs50,vs60 */
- .long 0xf112e21f /* <+1396>: xvcmpeqsp vs40,vs50,vs60 */
- .long 0xf112e61f /* <+1400>: xvcmpeqsp. vs40,vs50,vs60 */
- .long 0xf112e39f /* <+1404>: xvcmpgedp vs40,vs50,vs60 */
- .long 0xf112e79f /* <+1408>: xvcmpgedp. vs40,vs50,vs60 */
- .long 0xf112e29f /* <+1412>: xvcmpgesp vs40,vs50,vs60 */
- .long 0xf112e69f /* <+1416>: xvcmpgesp. vs40,vs50,vs60 */
- .long 0xf112e35f /* <+1420>: xvcmpgtdp vs40,vs50,vs60 */
- .long 0xf112e75f /* <+1424>: xvcmpgtdp. vs40,vs50,vs60 */
- .long 0xf112e25f /* <+1428>: xvcmpgtsp vs40,vs50,vs60 */
- .long 0xf112e65f /* <+1432>: xvcmpgtsp. vs40,vs50,vs60 */
- .long 0xf112e787 /* <+1436>: xvcpsgndp vs40,vs50,vs60 */
- .long 0xf11ce787 /* <+1440>: xvmovdp vs40,vs60 */
- .long 0xf11ce787 /* <+1444>: xvmovdp vs40,vs60 */
- .long 0xf112e687 /* <+1448>: xvcpsgnsp vs40,vs50,vs60 */
- .long 0xf11ce687 /* <+1452>: xvmovsp vs40,vs60 */
- .long 0xf11ce687 /* <+1456>: xvmovsp vs40,vs60 */
- .long 0xf100e627 /* <+1460>: xvcvdpsp vs40,vs60 */
- .long 0xf100e763 /* <+1464>: xvcvdpsxds vs40,vs60 */
- .long 0xf100e363 /* <+1468>: xvcvdpsxws vs40,vs60 */
- .long 0xf100e723 /* <+1472>: xvcvdpuxds vs40,vs60 */
- .long 0xf100e323 /* <+1476>: xvcvdpuxws vs40,vs60 */
- .long 0xf100e727 /* <+1480>: xvcvspdp vs40,vs60 */
- .long 0xf100e663 /* <+1484>: xvcvspsxds vs40,vs60 */
- .long 0xf100e263 /* <+1488>: xvcvspsxws vs40,vs60 */
- .long 0xf100e623 /* <+1492>: xvcvspuxds vs40,vs60 */
- .long 0xf100e223 /* <+1496>: xvcvspuxws vs40,vs60 */
- .long 0xf100e7e3 /* <+1500>: xvcvsxddp vs40,vs60 */
- .long 0xf100e6e3 /* <+1504>: xvcvsxdsp vs40,vs60 */
- .long 0xf100e3e3 /* <+1508>: xvcvsxwdp vs40,vs60 */
- .long 0xf100e2e3 /* <+1512>: xvcvsxwsp vs40,vs60 */
- .long 0xf100e7a3 /* <+1516>: xvcvuxddp vs40,vs60 */
- .long 0xf100e6a3 /* <+1520>: xvcvuxdsp vs40,vs60 */
- .long 0xf100e3a3 /* <+1524>: xvcvuxwdp vs40,vs60 */
- .long 0xf100e2a3 /* <+1528>: xvcvuxwsp vs40,vs60 */
- .long 0xf112e3c7 /* <+1532>: xvdivdp vs40,vs50,vs60 */
- .long 0xf112e2c7 /* <+1536>: xvdivsp vs40,vs50,vs60 */
- .long 0xf112e30f /* <+1540>: xvmaddadp vs40,vs50,vs60 */
- .long 0xf112e34f /* <+1544>: xvmaddmdp vs40,vs50,vs60 */
- .long 0xf112e20f /* <+1548>: xvmaddasp vs40,vs50,vs60 */
- .long 0xf112e24f /* <+1552>: xvmaddmsp vs40,vs50,vs60 */
- .long 0xf112e707 /* <+1556>: xvmaxdp vs40,vs50,vs60 */
- .long 0xf112e607 /* <+1560>: xvmaxsp vs40,vs50,vs60 */
- .long 0xf112e747 /* <+1564>: xvmindp vs40,vs50,vs60 */
- .long 0xf112e647 /* <+1568>: xvminsp vs40,vs50,vs60 */
- .long 0xf112e38f /* <+1572>: xvmsubadp vs40,vs50,vs60 */
- .long 0xf112e3cf /* <+1576>: xvmsubmdp vs40,vs50,vs60 */
- .long 0xf112e28f /* <+1580>: xvmsubasp vs40,vs50,vs60 */
- .long 0xf112e2cf /* <+1584>: xvmsubmsp vs40,vs50,vs60 */
- .long 0xf112e387 /* <+1588>: xvmuldp vs40,vs50,vs60 */
- .long 0xf112e287 /* <+1592>: xvmulsp vs40,vs50,vs60 */
- .long 0xf100e7a7 /* <+1596>: xvnabsdp vs40,vs60 */
- .long 0xf100e6a7 /* <+1600>: xvnabssp vs40,vs60 */
- .long 0xf100e7e7 /* <+1604>: xvnegdp vs40,vs60 */
- .long 0xf100e6e7 /* <+1608>: xvnegsp vs40,vs60 */
- .long 0xf112e70f /* <+1612>: xvnmaddadp vs40,vs50,vs60 */
- .long 0xf112e74f /* <+1616>: xvnmaddmdp vs40,vs50,vs60 */
- .long 0xf112e60f /* <+1620>: xvnmaddasp vs40,vs50,vs60 */
- .long 0xf112e64f /* <+1624>: xvnmaddmsp vs40,vs50,vs60 */
- .long 0xf112e78f /* <+1628>: xvnmsubadp vs40,vs50,vs60 */
- .long 0xf112e7cf /* <+1632>: xvnmsubmdp vs40,vs50,vs60 */
- .long 0xf112e68f /* <+1636>: xvnmsubasp vs40,vs50,vs60 */
- .long 0xf112e6cf /* <+1640>: xvnmsubmsp vs40,vs50,vs60 */
- .long 0xf100e327 /* <+1644>: xvrdpi vs40,vs60 */
- .long 0xf100e3af /* <+1648>: xvrdpic vs40,vs60 */
- .long 0xf100e3e7 /* <+1652>: xvrdpim vs40,vs60 */
- .long 0xf100e3a7 /* <+1656>: xvrdpip vs40,vs60 */
- .long 0xf100e367 /* <+1660>: xvrdpiz vs40,vs60 */
- .long 0xf100e36b /* <+1664>: xvredp vs40,vs60 */
- .long 0xf100e26b /* <+1668>: xvresp vs40,vs60 */
- .long 0xf100e227 /* <+1672>: xvrspi vs40,vs60 */
- .long 0xf100e2af /* <+1676>: xvrspic vs40,vs60 */
- .long 0xf100e2e7 /* <+1680>: xvrspim vs40,vs60 */
- .long 0xf100e2a7 /* <+1684>: xvrspip vs40,vs60 */
- .long 0xf100e267 /* <+1688>: xvrspiz vs40,vs60 */
- .long 0xf100e32b /* <+1692>: xvrsqrtedp vs40,vs60 */
- .long 0xf100e22b /* <+1696>: xvrsqrtesp vs40,vs60 */
- .long 0xf100e32f /* <+1700>: xvsqrtdp vs40,vs60 */
- .long 0xf100e22f /* <+1704>: xvsqrtsp vs40,vs60 */
- .long 0xf112e347 /* <+1708>: xvsubdp vs40,vs50,vs60 */
- .long 0xf112e247 /* <+1712>: xvsubsp vs40,vs50,vs60 */
- .long 0xf092e3ee /* <+1716>: xvtdivdp cr1,vs50,vs60 */
- .long 0xf092e2ee /* <+1720>: xvtdivsp cr1,vs50,vs60 */
- .long 0xf080e3aa /* <+1724>: xvtsqrtdp cr1,vs60 */
- .long 0xf080e2aa /* <+1728>: xvtsqrtsp cr1,vs60 */
- .long 0xf112e417 /* <+1732>: xxland vs40,vs50,vs60 */
- .long 0xf112e457 /* <+1736>: xxlandc vs40,vs50,vs60 */
- .long 0xf112e517 /* <+1740>: xxlnor vs40,vs50,vs60 */
- .long 0xf112e497 /* <+1744>: xxlor vs40,vs50,vs60 */
- .long 0xf112e4d7 /* <+1748>: xxlxor vs40,vs50,vs60 */
- .long 0xf112e097 /* <+1752>: xxmrghw vs40,vs50,vs60 */
- .long 0xf112e197 /* <+1756>: xxmrglw vs40,vs50,vs60 */
- .long 0xf112e057 /* <+1760>: xxmrghd vs40,vs50,vs60 */
- .long 0xf112e157 /* <+1764>: xxpermdi vs40,vs50,vs60,1 */
- .long 0xf112e257 /* <+1768>: xxpermdi vs40,vs50,vs60,2 */
- .long 0xf112e357 /* <+1772>: xxmrgld vs40,vs50,vs60 */
- .long 0xf1129057 /* <+1776>: xxspltd vs40,vs50,0 */
- .long 0xf1129057 /* <+1780>: xxspltd vs40,vs50,0 */
- .long 0xf1129357 /* <+1784>: xxspltd vs40,vs50,1 */
- .long 0xf1129357 /* <+1788>: xxspltd vs40,vs50,1 */
- .long 0xf112e057 /* <+1792>: xxmrghd vs40,vs50,vs60 */
- .long 0xf112e057 /* <+1796>: xxmrghd vs40,vs50,vs60 */
- .long 0xf112e357 /* <+1800>: xxmrgld vs40,vs50,vs60 */
- .long 0xf1129257 /* <+1804>: xxswapd vs40,vs50 */
- .long 0xf1129257 /* <+1808>: xxswapd vs40,vs50 */
- .long 0xf112e7bf /* <+1812>: xxsel vs40,vs50,vs60,vs62*/
- .long 0xf112e217 /* <+1816>: xxsldwi vs40,vs50,vs60,2 */
- .long 0xf102e293 /* <+1820>: xxspltw vs40,vs60,2 */
- .long 0x7d00a699 /* <+1824>: lxvd2x vs40,0,r20 */
- .long 0x7d0aa699 /* <+1828>: lxvd2x vs40,r10,r20 */
- .long 0x7d00a799 /* <+1832>: stxvd2x vs40,0,r20 */
- .long 0x7d0aa799 /* <+1836>: stxvd2x vs40,r10,r20 */
-
-## power8.d
- .long 0x7c05071d /* <+1840>: tabort. r5 */
- .long 0x7ce8861d /* <+1844>: tabortwc. 7,r8,r16 */
- .long 0x7e8b565d /* <+1848>: tabortdc. 20,r11,r10 */
- .long 0x7e2a9e9d /* <+1852>: tabortwci. 17,r10,-13 */
- .long 0x7fa3dedd /* <+1856>: tabortdci. 29,r3,-5 */
- .long 0x7c00051d /* <+1860>: tbegin. */
- .long 0x7f80059c /* <+1864>: tcheck cr7 */
- .long 0x7c00055d /* <+1868>: tend. */
- .long 0x7c00055d /* <+1872>: tend. */
- .long 0x7e00055d /* <+1876>: tendall. */
- .long 0x7e00055d /* <+1880>: tendall. */
- .long 0x7c18075d /* <+1884>: treclaim. r24 */
- .long 0x7c0007dd /* <+1888>: trechkpt. */
- .long 0x7c0005dd /* <+1892>: tsuspend. */
- .long 0x7c0005dd /* <+1896>: tsuspend. */
- .long 0x7c2005dd /* <+1900>: tresume. */
- .long 0x7c2005dd /* <+1904>: tresume. */
- .long 0x60420000 /* <+1908>: ori r2,r2,0 */
- .long 0x60000000 /* <+1912>: nop */
- .long 0x60420000 /* <+1916>: ori r2,r2,0 */
- .long 0x4c000124 /* <+1920>: rfebb 0 */
- .long 0x4c000924 /* <+1924>: rfebb */
- .long 0x4c000924 /* <+1928>: rfebb */
- .long 0x4d950460 /* <+1932>: bctar- 12,4*cr5+gt */
- .long 0x4c870461 /* <+1936>: bctarl- 4,4*cr1+so */
- .long 0x4dac0460 /* <+1940>: bctar+ 12,4*cr3+lt */
- .long 0x4ca20461 /* <+1944>: bctarl+ 4,eq */
- .long 0x4c880c60 /* <+1948>: bctar 4,4*cr2+lt,1 */
- .long 0x4c871461 /* <+1952>: bctarl 4,4*cr1+so,2 */
- .long 0x7c00003c /* <+1956>: waitasec */
- .long 0x7c00411c /* <+1960>: msgsndp r8 */
- .long 0x7c200126 /* <+1964>: mtsle 1 */
- .long 0x7c00d95c /* <+1968>: msgclrp r27 */
- .long 0x7d4a616d /* <+1972>: stqcx. r10,r10,r12 */
- .long 0x7f80396d /* <+1976>: stqcx. r28,0,r7 */
- .long 0x7f135a28 /* <+1980>: lqarx r24,r19,r11 */
- .long 0x7ec05a28 /* <+1984>: lqarx r22,0,r11 */
- .long 0x7e80325c /* <+1988>: mfbhrbe r20,6 */
- .long 0x7fb18329 /* <+1992>: pbt. r29,r17,r16 */
- .long 0x7dc03b29 /* <+1996>: pbt. r14,0,r7 */
- .long 0x7c00035c /* <+2000>: clrbhrb */
- .long 0x116a05ed /* <+2004>: vpermxor v11,v10,v0,v23 */
- .long 0x1302393c /* <+2008>: vaddeuqm v24,v2,v7,v4 */
- .long 0x114a40bd /* <+2012>: vaddecuq v10,v10,v8,v2 */
- .long 0x10af44fe /* <+2016>: vsubeuqm v5,v15,v8,v19 */
- .long 0x119f877f /* <+2020>: vsubecuq v12,v31,v16,v29 */
- .long 0x129d6888 /* <+2024>: vmulouw v20,v29,v13 */
- .long 0x13a0d089 /* <+2028>: vmuluwm v29,v0,v26 */
- .long 0x1115e0c0 /* <+2032>: vaddudm v8,v21,v28 */
- .long 0x103a08c2 /* <+2036>: vmaxud v1,v26,v1 */
- .long 0x128308c4 /* <+2040>: vrld v20,v3,v1 */
- .long 0x109358c7 /* <+2044>: vcmpequd v4,v19,v11 */
- .long 0x12eef100 /* <+2048>: vadduqm v23,v14,v30 */
- .long 0x11086940 /* <+2052>: vaddcuq v8,v8,v13 */
- .long 0x139b2188 /* <+2056>: vmulosw v28,v27,v4 */
- .long 0x106421c2 /* <+2060>: vmaxsd v3,v4,v4 */
- .long 0x1013aa88 /* <+2064>: vmuleuw v0,v19,v21 */
- .long 0x13149ac2 /* <+2068>: vminud v24,v20,v19 */
- .long 0x101c7ac7 /* <+2072>: vcmpgtud v0,v28,v15 */
- .long 0x12a01388 /* <+2076>: vmulesw v21,v0,v2 */
- .long 0x113a4bc2 /* <+2080>: vminsd v9,v26,v9 */
- .long 0x133d5bc4 /* <+2084>: vsrad v25,v29,v11 */
- .long 0x117c5bc7 /* <+2088>: vcmpgtsd v11,v28,v11 */
- .long 0x10a8d601 /* <+2092>: bcdadd. v5,v8,v26,1 */
- .long 0x10836408 /* <+2096>: vpmsumb v4,v3,v12 */
- .long 0x135fae41 /* <+2100>: bcdsub. v26,v31,v21,1 */
- .long 0x10b18448 /* <+2104>: vpmsumh v5,v17,v16 */
- .long 0x12f1a44e /* <+2108>: vpkudum v23,v17,v20 */
- .long 0x1315ec88 /* <+2112>: vpmsumw v24,v21,v29 */
- .long 0x11366cc8 /* <+2116>: vpmsumd v9,v22,v13 */
- .long 0x125394ce /* <+2120>: vpkudus v18,v19,v18 */
- .long 0x13d0b500 /* <+2124>: vsubuqm v30,v16,v22 */
- .long 0x11cb3d08 /* <+2128>: vcipher v14,v11,v7 */
- .long 0x1142b509 /* <+2132>: vcipherlast v10,v2,v22 */
- .long 0x12e06d0c /* <+2136>: vgbbd v23,v13 */
- .long 0x12198540 /* <+2140>: vsubcuq v16,v25,v16 */
- .long 0x13e12d44 /* <+2144>: vorc v31,v1,v5 */
- .long 0x1091fd48 /* <+2148>: vncipher v4,v17,v31 */
- .long 0x1302dd49 /* <+2152>: vncipherlast v24,v2,v27 */
- .long 0x12f5bd4c /* <+2156>: vbpermq v23,v21,v23 */
- .long 0x13724d4e /* <+2160>: vpksdus v27,v18,v9 */
- .long 0x137ddd84 /* <+2164>: vnand v27,v29,v27 */
- .long 0x1273c5c4 /* <+2168>: vsld v19,v19,v24 */
- .long 0x10ad05c8 /* <+2172>: vsbox v5,v13 */
- .long 0x13233dce /* <+2176>: vpksdss v25,v3,v7 */
- .long 0x138804c7 /* <+2180>: vcmpequd. v28,v8,v0 */
- .long 0x1340d64e /* <+2184>: vupkhsw v26,v26 */
- .long 0x10a73682 /* <+2188>: vshasigmaw v5,v7,0,6 */
- .long 0x13957684 /* <+2192>: veqv v28,v21,v14 */
- .long 0x10289e8c /* <+2196>: vmrgow v1,v8,v19 */
- .long 0x100a56c2 /* <+2200>: vshasigmad v0,v10,0,10 */
- .long 0x10bb76c4 /* <+2204>: vsrd v5,v27,v14 */
- .long 0x11606ece /* <+2208>: vupklsw v11,v13 */
- .long 0x11c08702 /* <+2212>: vclzb v14,v16 */
- .long 0x1280df03 /* <+2216>: vpopcntb v20,v27 */
- .long 0x13805f42 /* <+2220>: vclzh v28,v11 */
- .long 0x13004f43 /* <+2224>: vpopcnth v24,v9 */
- .long 0x1360ff82 /* <+2228>: vclzw v27,v31 */
- .long 0x12209f83 /* <+2232>: vpopcntw v17,v19 */
- .long 0x1180efc2 /* <+2236>: vclzd v12,v29 */
- .long 0x12e0b7c3 /* <+2240>: vpopcntd v23,v22 */
- .long 0x1314eec7 /* <+2244>: vcmpgtud. v24,v20,v29 */
- .long 0x1126dfc7 /* <+2248>: vcmpgtsd. v9,v6,v27 */
- .long 0x7fced019 /* <+2252>: lxsiwzx vs62,r14,r26 */
- .long 0x7d00c819 /* <+2256>: lxsiwzx vs40,0,r25 */
- .long 0x7f20d098 /* <+2260>: lxsiwax vs25,0,r26 */
- .long 0x7c601898 /* <+2264>: lxsiwax vs3,0,r3 */
- .long 0x7fcc0067 /* <+2268>: mfvsrd r12,vs62 */
- .long 0x7d9400e6 /* <+2272>: mffprwz r20,f12 */
- .long 0x7dc97118 /* <+2276>: stxsiwx vs14,r9,r14 */
- .long 0x7ea04118 /* <+2280>: stxsiwx vs21,0,r8 */
- .long 0x7e0b0167 /* <+2284>: mtvsrd vs48,r11 */
- .long 0x7ff701a7 /* <+2288>: mtvrwa v31,r23 */
- .long 0x7e1a01e6 /* <+2292>: mtfprwz f16,r26 */
- .long 0x7db36c18 /* <+2296>: lxsspx vs13,r19,r13 */
- .long 0x7e406c18 /* <+2300>: lxsspx vs18,0,r13 */
- .long 0x7d622519 /* <+2304>: stxsspx vs43,r2,r4 */
- .long 0x7ee05d19 /* <+2308>: stxsspx vs55,0,r11 */
- .long 0xf2d0c805 /* <+2312>: xsaddsp vs54,vs48,vs25 */
- .long 0xf1d2080c /* <+2316>: xsmaddasp vs14,vs50,vs1 */
- .long 0xf3565042 /* <+2320>: xssubsp vs26,vs22,vs42 */
- .long 0xf375a04e /* <+2324>: xsmaddmsp vs27,vs53,vs52 */
- .long 0xf100d82a /* <+2328>: xsrsqrtesp vs8,vs59 */
- .long 0xf180482e /* <+2332>: xssqrtsp vs12,vs41 */
- .long 0xf32b0083 /* <+2336>: xsmulsp vs57,vs11,vs32 */
- .long 0xf0d4d089 /* <+2340>: xsmsubasp vs38,vs20,vs26 */
- .long 0xf35330c0 /* <+2344>: xsdivsp vs26,vs19,vs6 */
- .long 0xf065b8cf /* <+2348>: xsmsubmsp vs35,vs37,vs55 */
- .long 0xf3604069 /* <+2352>: xsresp vs59,vs8 */
- .long 0xf1810c0f /* <+2356>: xsnmaddasp vs44,vs33,vs33 */
- .long 0xf23ef44c /* <+2360>: xsnmaddmsp vs17,vs62,vs30 */
- .long 0xf2d4fc8d /* <+2364>: xsnmsubasp vs54,vs52,vs31 */
- .long 0xf0a5d4cb /* <+2368>: xsnmsubmsp vs37,vs5,vs58 */
- .long 0xf3d66556 /* <+2372>: xxlorc vs30,vs54,vs44 */
- .long 0xf22eed91 /* <+2376>: xxlnand vs49,vs14,vs29 */
- .long 0xf3d6f5d1 /* <+2380>: xxleqv vs62,vs22,vs30 */
- .long 0xf380b42f /* <+2384>: xscvdpspn vs60,vs54 */
- .long 0xf2c06c66 /* <+2388>: xsrsp vs22,vs45 */
- .long 0xf340dca2 /* <+2392>: xscvuxdsp vs26,vs59 */
- .long 0xf0c08ce3 /* <+2396>: xscvsxdsp vs38,vs49 */
- .long 0xf360d52d /* <+2400>: xscvspdpn vs59,vs26 */
- .long 0xff0e168c /* <+2404>: fmrgow f24,f14,f2 */
- .long 0xfec72f8c /* <+2408>: fmrgew f22,f7,f5 */
- .long 0x7c00719c /* <+2412>: msgsnd r14 */
- .long 0x7c00b9dc /* <+2416>: msgclr r23 */
- .long 0x7d002e99 /* <+2420>: lxvd2x vs40,0,r5 */
- .long 0x7d002e99 /* <+2424>: lxvd2x vs40,0,r5 */
- .long 0x7d543698 /* <+2428>: lxvd2x vs10,r20,r6 */
- .long 0x7d543698 /* <+2432>: lxvd2x vs10,r20,r6 */
- .long 0x7d203f99 /* <+2436>: stxvd2x vs41,0,r7 */
- .long 0x7d203f99 /* <+2440>: stxvd2x vs41,0,r7 */
- .long 0x7d754798 /* <+2444>: stxvd2x vs11,r21,r8 */
- .long 0x7d754798 /* <+2448>: stxvd2x vs11,r21,r8 */
-
-## altivec2.d
- .long 0x7c60e20e /* <+2452>: lvepxl v3,0,r28 */
- .long 0x7e64920e /* <+2456>: lvepxl v19,r4,r18 */
- .long 0x7f609a4e /* <+2460>: lvepx v27,0,r19 */
- .long 0x7c39924e /* <+2464>: lvepx v1,r25,r18 */
- .long 0x7fe0da0a /* <+2468>: lvexbx v31,0,r27 */
- .long 0x7f81620a /* <+2472>: lvexbx v28,r1,r12 */
- .long 0x7fe0724a /* <+2476>: lvexhx v31,0,r14 */
- .long 0x7e30fa4a /* <+2480>: lvexhx v17,r16,r31 */
- .long 0x7ec0ea8a /* <+2484>: lvexwx v22,0,r29 */
- .long 0x7ef92a8a /* <+2488>: lvexwx v23,r25,r5 */
- .long 0x7c60660a /* <+2492>: lvsm v3,0,r12 */
- .long 0x7f7d0e0a /* <+2496>: lvsm v27,r29,r1 */
- .long 0x7ce036ca /* <+2500>: lvswxl v7,0,r6 */
- .long 0x7cf046ca /* <+2504>: lvswxl v7,r16,r8 */
- .long 0x7dc094ca /* <+2508>: lvswx v14,0,r18 */
- .long 0x7f9c84ca /* <+2512>: lvswx v28,r28,r16 */
- .long 0x7f60668a /* <+2516>: lvtlxl v27,0,r12 */
- .long 0x7f7c068a /* <+2520>: lvtlxl v27,r28,r0 */
- .long 0x7ee0cc8a /* <+2524>: lvtlx v23,0,r25 */
- .long 0x7c39748a /* <+2528>: lvtlx v1,r25,r14 */
- .long 0x7e80c64a /* <+2532>: lvtrxl v20,0,r24 */
- .long 0x7eddc64a /* <+2536>: lvtrxl v22,r29,r24 */
- .long 0x7f00444a /* <+2540>: lvtrx v24,0,r8 */
- .long 0x7db7e44a /* <+2544>: lvtrx v13,r23,r28 */
- .long 0x7d9c60dc /* <+2548>: mvidsplt v12,r28,r12 */
- .long 0x7d5b005c /* <+2552>: mviwsplt v10,r27,r0 */
- .long 0x7f606e0e /* <+2556>: stvepxl v27,0,r13 */
- .long 0x7c42fe0e /* <+2560>: stvepxl v2,r2,r31 */
- .long 0x7c60564e /* <+2564>: stvepx v3,0,r10 */
- .long 0x7f7c064e /* <+2568>: stvepx v27,r28,r0 */
- .long 0x7da0330a /* <+2572>: stvexbx v13,0,r6 */
- .long 0x7db91b0a /* <+2576>: stvexbx v13,r25,r3 */
- .long 0x7ec00b4a /* <+2580>: stvexhx v22,0,r1 */
- .long 0x7e2e534a /* <+2584>: stvexhx v17,r14,r10 */
- .long 0x7ea0db8a /* <+2588>: stvexwx v21,0,r27 */
- .long 0x7ff20b8a /* <+2592>: stvexwx v31,r18,r1 */
- .long 0x7f406f8a /* <+2596>: stvflxl v26,0,r13 */
- .long 0x7ecdaf8a /* <+2600>: stvflxl v22,r13,r21 */
- .long 0x7ca04d8a /* <+2604>: stvflx v5,0,r9 */
- .long 0x7eb80d8a /* <+2608>: stvflx v21,r24,r1 */
- .long 0x7da0574a /* <+2612>: stvfrxl v13,0,r10 */
- .long 0x7db1cf4a /* <+2616>: stvfrxl v13,r17,r25 */
- .long 0x7e20554a /* <+2620>: stvfrx v17,0,r10 */
- .long 0x7d0cfd4a /* <+2624>: stvfrx v8,r12,r31 */
- .long 0x7e40efca /* <+2628>: stvswxl v18,0,r29 */
- .long 0x7f4e47ca /* <+2632>: stvswxl v26,r14,r8 */
- .long 0x7c007dca /* <+2636>: stvswx v0,0,r15 */
- .long 0x7db73dca /* <+2640>: stvswx v13,r23,r7 */
- .long 0x10d18403 /* <+2644>: vabsdub v6,v17,v16 */
- .long 0x12b22443 /* <+2648>: vabsduh v21,v18,v4 */
- .long 0x13344c83 /* <+2652>: vabsduw v25,v20,v9 */
- .long 0x10d1a6ad /* <+2656>: vpermxor v6,v17,v20,v26 */
- .long 0x13ba7f3c /* <+2660>: vaddeuqm v29,v26,v15,v28 */
- .long 0x11e83e3d /* <+2664>: vaddecuq v15,v8,v7,v24 */
- .long 0x1046a87e /* <+2668>: vsubeuqm v2,v6,v21,v1 */
- .long 0x13a6013f /* <+2672>: vsubecuq v29,v6,v0,v4 */
- .long 0x11c91888 /* <+2676>: vmulouw v14,v9,v3 */
- .long 0x13109089 /* <+2680>: vmuluwm v24,v16,v18 */
- .long 0x115188c0 /* <+2684>: vaddudm v10,v17,v17 */
- .long 0x13d920c2 /* <+2688>: vmaxud v30,v25,v4 */
- .long 0x1146e0c4 /* <+2692>: vrld v10,v6,v28 */
- .long 0x136738c7 /* <+2696>: vcmpequd v27,v7,v7 */
- .long 0x12d0c900 /* <+2700>: vadduqm v22,v16,v25 */
- .long 0x1035e940 /* <+2704>: vaddcuq v1,v21,v29 */
- .long 0x128b9988 /* <+2708>: vmulosw v20,v11,v19 */
- .long 0x131309c2 /* <+2712>: vmaxsd v24,v19,v1 */
- .long 0x11bbf288 /* <+2716>: vmuleuw v13,v27,v30 */
- .long 0x11388ac2 /* <+2720>: vminud v9,v24,v17 */
- .long 0x1152e2c7 /* <+2724>: vcmpgtud v10,v18,v28 */
- .long 0x101db388 /* <+2728>: vmulesw v0,v29,v22 */
- .long 0x11bc0bc2 /* <+2732>: vminsd v13,v28,v1 */
- .long 0x11542bc4 /* <+2736>: vsrad v10,v20,v5 */
- .long 0x13752bc7 /* <+2740>: vcmpgtsd v27,v21,v5 */
- .long 0x1017f601 /* <+2744>: bcdadd. v0,v23,v30,1 */
- .long 0x1338d408 /* <+2748>: vpmsumb v25,v24,v26 */
- .long 0x11042641 /* <+2752>: bcdsub. v8,v4,v4,1 */
- .long 0x120ed448 /* <+2756>: vpmsumh v16,v14,v26 */
- .long 0x1362d44e /* <+2760>: vpkudum v27,v2,v26 */
- .long 0x10d78c88 /* <+2764>: vpmsumw v6,v23,v17 */
- .long 0x1286ccc8 /* <+2768>: vpmsumd v20,v6,v25 */
- .long 0x137684ce /* <+2772>: vpkudus v27,v22,v16 */
- .long 0x12b494c0 /* <+2776>: vsubudm v21,v20,v18 */
- .long 0x12b49500 /* <+2780>: vsubuqm v21,v20,v18 */
- .long 0x13bd3508 /* <+2784>: vcipher v29,v29,v6 */
- .long 0x104da509 /* <+2788>: vcipherlast v2,v13,v20 */
- .long 0x1280950c /* <+2792>: vgbbd v20,v18 */
- .long 0x1268cd40 /* <+2796>: vsubcuq v19,v8,v25 */
- .long 0x113aed44 /* <+2800>: vorc v9,v26,v29 */
- .long 0x12946d48 /* <+2804>: vncipher v20,v20,v13 */
- .long 0x11e5dd49 /* <+2808>: vncipherlast v15,v5,v27 */
- .long 0x1073354c /* <+2812>: vbpermq v3,v19,v6 */
- .long 0x13c4e54e /* <+2816>: vpksdus v30,v4,v28 */
- .long 0x10047584 /* <+2820>: vnand v0,v4,v14 */
- .long 0x1228edc4 /* <+2824>: vsld v17,v8,v29 */
- .long 0x13b405c8 /* <+2828>: vsbox v29,v20 */
- .long 0x11675dce /* <+2832>: vpksdss v11,v7,v11 */
- .long 0x107384c7 /* <+2836>: vcmpequd. v3,v19,v16 */
- .long 0x12408e4e /* <+2840>: vupkhsw v18,v17 */
- .long 0x13a86e82 /* <+2844>: vshasigmaw v29,v8,0,13 */
- .long 0x12fcd684 /* <+2848>: veqv v23,v28,v26 */
- .long 0x13a0178c /* <+2852>: vmrgew v29,v0,v2 */
- .long 0x13a0168c /* <+2856>: vmrgow v29,v0,v2 */
- .long 0x137306c2 /* <+2860>: vshasigmad v27,v19,0,0 */
- .long 0x129ce6c4 /* <+2864>: vsrd v20,v28,v28 */
- .long 0x1240aece /* <+2868>: vupklsw v18,v21 */
- .long 0x13c03f02 /* <+2872>: vclzb v30,v7 */
- .long 0x13a0af03 /* <+2876>: vpopcntb v29,v21 */
- .long 0x1320af42 /* <+2880>: vclzh v25,v21 */
- .long 0x1200f743 /* <+2884>: vpopcnth v16,v30 */
- .long 0x13801f82 /* <+2888>: vclzw v28,v3 */
- .long 0x11404f83 /* <+2892>: vpopcntw v10,v9 */
- .long 0x12c04fc2 /* <+2896>: vclzd v22,v9 */
- .long 0x11e0f7c3 /* <+2900>: vpopcntd v15,v30 */
- .long 0x105f36c7 /* <+2904>: vcmpgtud. v2,v31,v6 */
- .long 0x128f17c7 /* <+2908>: vcmpgtsd. v20,v15,v2 */
-
-## vsd2.d
- .long 0x7fced019 /* <+2912>: lxsiwzx vs62,r14,r26 */
- .long 0x7d00c819 /* <+2916>: lxsiwzx vs40,0,r25 */
- .long 0x7f20d098 /* <+2920>: lxsiwax vs25,0,r26 */
- .long 0x7c601898 /* <+2924>: lxsiwax vs3,0,r3 */
- .long 0x7fcc0066 /* <+2928>: mfvsrd r12,vs30 */
- .long 0x7fcc0066 /* <+2932>: mfvsrd r12,vs30 */
- .long 0x7fcc0067 /* <+2936>: mfvsrd r12,vs62 */
- .long 0x7fcc0067 /* <+2940>: mfvsrd r12,vs62 */
- .long 0x7d9400e6 /* <+2944>: mffprwz r20,f12 */
- .long 0x7d9400e6 /* <+2948>: mffprwz r20,f12 */
- .long 0x7d9500e7 /* <+2952>: mfvrwz r21,v12 */
- .long 0x7d9500e7 /* <+2956>: mfvrwz r21,v12 */
- .long 0x7dc97118 /* <+2960>: stxsiwx vs14,r9,r14 */
- .long 0x7ea04118 /* <+2964>: stxsiwx vs21,0,r8 */
- .long 0x7d7c0166 /* <+2968>: mtvsrd vs11,r28 */
- .long 0x7d7c0166 /* <+2972>: mtvsrd vs11,r28 */
- .long 0x7d7d0167 /* <+2976>: mtvsrd vs43,r29 */
- .long 0x7d7d0167 /* <+2980>: mtvsrd vs43,r29 */
- .long 0x7f1601a6 /* <+2984>: mtfprwa f24,r22 */
- .long 0x7f1601a6 /* <+2988>: mtfprwa f24,r22 */
- .long 0x7f3701a7 /* <+2992>: mtvrwa v25,r23 */
- .long 0x7f3701a7 /* <+2996>: mtvrwa v25,r23 */
- .long 0x7f5b01e6 /* <+3000>: mtfprwz f26,r27 */
- .long 0x7f5b01e6 /* <+3004>: mtfprwz f26,r27 */
- .long 0x7f7c01e7 /* <+3008>: mtvrwz v27,r28 */
- .long 0x7f7c01e7 /* <+3012>: mtvrwz v27,r28 */
- .long 0x7db36c18 /* <+3016>: lxsspx vs13,r19,r13 */
- .long 0x7e406c18 /* <+3020>: lxsspx vs18,0,r13 */
- .long 0x7d622519 /* <+3024>: stxsspx vs43,r2,r4 */
- .long 0x7ee05d19 /* <+3028>: stxsspx vs55,0,r11 */
- .long 0xf2d0c805 /* <+3032>: xsaddsp vs54,vs48,vs25 */
- .long 0xf1d2080c /* <+3036>: xsmaddasp vs14,vs50,vs1 */
- .long 0xf3565042 /* <+3040>: xssubsp vs26,vs22,vs42 */
- .long 0xf375a04e /* <+3044>: xsmaddmsp vs27,vs53,vs52 */
- .long 0xf100d82a /* <+3048>: xsrsqrtesp vs8,vs59 */
- .long 0xf180482e /* <+3052>: xssqrtsp vs12,vs41 */
- .long 0xf32b0083 /* <+3056>: xsmulsp vs57,vs11,vs32 */
- .long 0xf0d4d089 /* <+3060>: xsmsubasp vs38,vs20,vs26 */
- .long 0xf35330c0 /* <+3064>: xsdivsp vs26,vs19,vs6 */
- .long 0xf065b8cf /* <+3068>: xsmsubmsp vs35,vs37,vs55 */
- .long 0xf3604069 /* <+3072>: xsresp vs59,vs8 */
- .long 0xf1810c0f /* <+3076>: xsnmaddasp vs44,vs33,vs33 */
- .long 0xf23ef44c /* <+3080>: xsnmaddmsp vs17,vs62,vs30 */
- .long 0xf2d4fc8d /* <+3084>: xsnmsubasp vs54,vs52,vs31 */
- .long 0xf0a5d4cb /* <+3088>: xsnmsubmsp vs37,vs5,vs58 */
- .long 0xf3d66556 /* <+3092>: xxlorc vs30,vs54,vs44 */
- .long 0xf22eed91 /* <+3096>: xxlnand vs49,vs14,vs29 */
- .long 0xf3d6f5d1 /* <+3100>: xxleqv vs62,vs22,vs30 */
- .long 0xf380b42f /* <+3104>: xscvdpspn vs60,vs54 */
- .long 0xf2c06c66 /* <+3108>: xsrsp vs22,vs45 */
- .long 0xf340dca2 /* <+3112>: xscvuxdsp vs26,vs59 */
- .long 0xf0c08ce3 /* <+3116>: xscvsxdsp vs38,vs49 */
- .long 0xf360d52d /* <+3120>: xscvspdpn vs59,vs26 */
- .long 0xff0e168c /* <+3124>: fmrgow f24,f14,f2 */
- .long 0xfec72f8c /* <+3128>: fmrgew f22,f7,f5 */
-
-## power9.d
- .long 0x7da30474 /* <+3132>: cnttzd r3,r13 */
- .long 0x7dc40475 /* <+3136>: cnttzd. r4,r14 */
- .long 0x7de50434 /* <+3140>: cnttzw r5,r15 */
- .long 0x7e060435 /* <+3144>: cnttzw. r6,r16 */
- .long 0x7d54ae12 /* <+3148>: modsd r10,r20,r21 */
- .long 0x7d75b616 /* <+3152>: modsw r11,r21,r22 */
- .long 0x7d96ba12 /* <+3156>: modud r12,r22,r23 */
- .long 0x7db7c216 /* <+3160>: moduw r13,r23,r24 */
- .long 0x10672581 /* <+3164>: bcdcfn. v3,v4,0 */
- .long 0x10672781 /* <+3168>: bcdcfn. v3,v4,1 */
- .long 0x10822d81 /* <+3172>: bcdcfsq. v4,v5,0 */
- .long 0x10822f81 /* <+3176>: bcdcfsq. v4,v5,1 */
- .long 0x10a63581 /* <+3180>: bcdcfz. v5,v6,0 */
- .long 0x10a63781 /* <+3184>: bcdcfz. v5,v6,1 */
- .long 0x10c74341 /* <+3188>: bcdcpsgn. v6,v7,v8 */
- .long 0x10e54581 /* <+3192>: bcdctn. v7,v8 */
- .long 0x11004d81 /* <+3196>: bcdctsq. v8,v9 */
- .long 0x11245581 /* <+3200>: bcdctz. v9,v10,0 */
- .long 0x11245781 /* <+3204>: bcdctz. v9,v10,1 */
- .long 0x115f5d81 /* <+3208>: bcdsetsgn. v10,v11,0 */
- .long 0x115f5f81 /* <+3212>: bcdsetsgn. v10,v11,1 */
- .long 0x116c6dc1 /* <+3216>: bcdsr. v11,v12,v13,0 */
- .long 0x116c6fc1 /* <+3220>: bcdsr. v11,v12,v13,1 */
- .long 0x118d74c1 /* <+3224>: bcds. v12,v13,v14,0 */
- .long 0x118d76c1 /* <+3228>: bcds. v12,v13,v14,1 */
- .long 0x11ae7d01 /* <+3232>: bcdtrunc. v13,v14,v15,0 */
- .long 0x11ae7f01 /* <+3236>: bcdtrunc. v13,v14,v15,1 */
- .long 0x11cf8481 /* <+3240>: bcdus. v14,v15,v16 */
- .long 0x11f08d41 /* <+3244>: bcdutrunc. v15,v16,v17 */
- .long 0x7e80aa5a /* <+3248>: lxvll vs20,0,r21 */
- .long 0x7e8aaa5a /* <+3252>: lxvll vs20,r10,r21 */
- .long 0x7ea05b5a /* <+3256>: stxvll vs21,0,r11 */
- .long 0x7eaa5b5a /* <+3260>: stxvll vs21,r10,r11 */
- .long 0x12d70001 /* <+3264>: vmul10cuq v22,v23 */
- .long 0x12f8c841 /* <+3268>: vmul10ecuq v23,v24,v25 */
- .long 0x1319d241 /* <+3272>: vmul10euq v24,v25,v26 */
- .long 0x133a0201 /* <+3276>: vmul10uq v25,v26 */
- .long 0xfd4b6008 /* <+3280>: xsaddqp v10,v11,v12 */
- .long 0xfd6c6009 /* <+3284>: xsaddqpo v11,v12,v12 */
- .long 0xfe80f00a /* <+3288>: xsrqpi 0,v20,v30,0 */
- .long 0xfe81f00a /* <+3292>: xsrqpi 1,v20,v30,0 */
- .long 0xfe80f60a /* <+3296>: xsrqpi 0,v20,v30,3 */
- .long 0xfe81f60a /* <+3300>: xsrqpi 1,v20,v30,3 */
- .long 0xfea0f80b /* <+3304>: xsrqpix 0,v21,v31,0 */
- .long 0xfea1f80b /* <+3308>: xsrqpix 1,v21,v31,0 */
- .long 0xfea0fe0b /* <+3312>: xsrqpix 0,v21,v31,3 */
- .long 0xfea1fe0b /* <+3316>: xsrqpix 1,v21,v31,3 */
- .long 0xfd8d7048 /* <+3320>: xsmulqp v12,v13,v14 */
- .long 0xfdae7849 /* <+3324>: xsmulqpo v13,v14,v15 */
- .long 0xfec0b84a /* <+3328>: xsrqpxp 0,v22,v23,0 */
- .long 0xfec1b84a /* <+3332>: xsrqpxp 1,v22,v23,0 */
- .long 0xfec0be4a /* <+3336>: xsrqpxp 0,v22,v23,3 */
- .long 0xfec1be4a /* <+3340>: xsrqpxp 1,v22,v23,3 */
- .long 0xfdcf80c8 /* <+3344>: xscpsgnqp v14,v15,v16 */
- .long 0xfc0f8108 /* <+3348>: xscmpoqp cr0,v15,v16 */
- .long 0xff8f8108 /* <+3352>: xscmpoqp cr7,v15,v16 */
- .long 0xfc108948 /* <+3356>: xscmpexpqp cr0,v16,v17 */
- .long 0xff908948 /* <+3360>: xscmpexpqp cr7,v16,v17 */
- .long 0xfe329b08 /* <+3364>: xsmaddqp v17,v18,v19 */
- .long 0xfe53a309 /* <+3368>: xsmaddqpo v18,v19,v20 */
- .long 0xfe74ab48 /* <+3372>: xsmsubqp v19,v20,v21 */
- .long 0xfe95b349 /* <+3376>: xsmsubqpo v20,v21,v22 */
- .long 0xfeb6bb88 /* <+3380>: xsnmaddqp v21,v22,v23 */
- .long 0xfed7c389 /* <+3384>: xsnmaddqpo v22,v23,v24 */
- .long 0xfef8cbc8 /* <+3388>: xsnmsubqp v23,v24,v25 */
- .long 0xff19d3c9 /* <+3392>: xsnmsubqpo v24,v25,v26 */
- .long 0xff3adc08 /* <+3396>: xssubqp v25,v26,v27 */
- .long 0xff5be409 /* <+3400>: xssubqpo v26,v27,v28 */
- .long 0xff7cec48 /* <+3404>: xsdivqp v27,v28,v29 */
- .long 0xff9df449 /* <+3408>: xsdivqpo v28,v29,v30 */
- .long 0xfc1df508 /* <+3412>: xscmpuqp cr0,v29,v30 */
- .long 0xff9df508 /* <+3416>: xscmpuqp cr7,v29,v30 */
- .long 0xfc00f588 /* <+3420>: xststdcqp cr0,v30,0 */
- .long 0xff80f588 /* <+3424>: xststdcqp cr7,v30,0 */
- .long 0xfc7ffd88 /* <+3428>: xststdcqp cr0,v31,127 */
- .long 0xfffffd88 /* <+3432>: xststdcqp cr7,v31,127 */
- .long 0xfd405e48 /* <+3436>: xsabsqp v10,v11 */
- .long 0xfd626648 /* <+3440>: xsxexpqp v11,v12 */
- .long 0xfd886e48 /* <+3444>: xsnabsqp v12,v13 */
- .long 0xfdb07648 /* <+3448>: xsnegqp v13,v14 */
- .long 0xfdd27e48 /* <+3452>: xsxsigqp v14,v15 */
- .long 0xfdfb8648 /* <+3456>: xssqrtqp v15,v16 */
- .long 0xfe1b8e49 /* <+3460>: xssqrtqpo v16,v17 */
- .long 0xfe219688 /* <+3464>: xscvqpuwz v17,v18 */
- .long 0xfe429e88 /* <+3468>: xscvudqp v18,v19 */
- .long 0xfe69a688 /* <+3472>: xscvqpswz v19,v20 */
- .long 0xfe8aae88 /* <+3476>: xscvsdqp v20,v21 */
- .long 0xfeb1b688 /* <+3480>: xscvqpudz v21,v22 */
- .long 0xfed4be88 /* <+3484>: xscvqpdp v22,v23 */
- .long 0xfef4c689 /* <+3488>: xscvqpdpo v23,v24 */
- .long 0xff16ce88 /* <+3492>: xscvdpqp v24,v25 */
- .long 0xff39d688 /* <+3496>: xscvqpsdz v25,v26 */
- .long 0xff5be6c8 /* <+3500>: xsiexpqp v26,v27,v28 */
- .long 0x108531fb /* <+3504>: vpermr v4,v5,v6,v7 */
- .long 0x10a0320d /* <+3508>: vextractub v5,v6,0 */
- .long 0x10af320d /* <+3512>: vextractub v5,v6,15 */
- .long 0x10c03a4d /* <+3516>: vextractuh v6,v7,0 */
- .long 0x10cf3a4d /* <+3520>: vextractuh v6,v7,15 */
- .long 0x10e0428d /* <+3524>: vextractuw v7,v8,0 */
- .long 0x10ef428d /* <+3528>: vextractuw v7,v8,15 */
- .long 0x11004acd /* <+3532>: vextractd v8,v9,0 */
- .long 0x110f4acd /* <+3536>: vextractd v8,v9,15 */
- .long 0x1120530d /* <+3540>: vinsertb v9,v10,0 */
- .long 0x112f530d /* <+3544>: vinsertb v9,v10,15 */
- .long 0x11405b4d /* <+3548>: vinserth v10,v11,0 */
- .long 0x114f5b4d /* <+3552>: vinserth v10,v11,15 */
- .long 0x1160638d /* <+3556>: vinsertw v11,v12,0 */
- .long 0x116f638d /* <+3560>: vinsertw v11,v12,15 */
- .long 0x11806bcd /* <+3564>: vinsertd v12,v13,0 */
- .long 0x118f6bcd /* <+3568>: vinsertd v12,v13,15 */
- .long 0x7db40267 /* <+3572>: mfvsrld r20,vs45 */
- .long 0x7dd50327 /* <+3576>: mtvsrws vs46,r21 */
- .long 0x7de0bb67 /* <+3580>: mtvsrdd vs47,0,r23 */
- .long 0x7df6bb67 /* <+3584>: mtvsrdd vs47,r22,r23 */
- .long 0x7e405a19 /* <+3588>: lxvx vs50,0,r11 */
- .long 0x7c0a5a18 /* <+3592>: lxvx vs0,r10,r11 */
- .long 0x7e6062d9 /* <+3596>: lxvwsx vs51,0,r12 */
- .long 0x7c2a62d8 /* <+3600>: lxvwsx vs1,r10,r12 */
- .long 0x7e806e59 /* <+3604>: lxvh8x vs52,0,r13 */
- .long 0x7c4a6e58 /* <+3608>: lxvh8x vs2,r10,r13 */
- .long 0x7ea076d9 /* <+3612>: lxvb16x vs53,0,r14 */
- .long 0x7c6a76d8 /* <+3616>: lxvb16x vs3,r10,r14 */
- .long 0x7ec07b19 /* <+3620>: stxvx vs54,0,r15 */
- .long 0x7c947b18 /* <+3624>: stxvx vs4,r20,r15 */
- .long 0x7ee08759 /* <+3628>: stxvh8x vs55,0,r16 */
- .long 0x7cb48758 /* <+3632>: stxvh8x vs5,r20,r16 */
- .long 0x7f008fd9 /* <+3636>: stxvb16x vs56,0,r17 */
- .long 0x7cd48fd8 /* <+3640>: stxvb16x vs6,r20,r17 */
- .long 0xf0802a94 /* <+3644>: xxextractuw vs4,vs5,0 */
- .long 0xf10f9297 /* <+3648>: xxextractuw vs40,vs50,15 */
- .long 0xf08002d0 /* <+3652>: xxspltib vs4,0 */
- .long 0xf127fad1 /* <+3656>: xxspltib vs41,255 */
- .long 0xf0a032d4 /* <+3660>: xxinsertw vs5,vs6,0 */
- .long 0xf24fe2d7 /* <+3664>: xxinsertw vs50,vs60,15 */
- .long 0xf0c73f6c /* <+3668>: xxbrh vs6,vs7 */
- .long 0xf307cf6f /* <+3672>: xxbrh vs56,vs57 */
- .long 0xf0ef476c /* <+3676>: xxbrw vs7,vs8 */
- .long 0xf32fd76f /* <+3680>: xxbrw vs57,vs58 */
- .long 0xf1174f6c /* <+3684>: xxbrd vs8,vs9 */
- .long 0xf357df6f /* <+3688>: xxbrd vs58,vs59 */
- .long 0xf13f576c /* <+3692>: xxbrq vs9,vs10 */
- .long 0xf37fe76f /* <+3696>: xxbrq vs59,vs60 */
- .long 0xe6800002 /* <+3700>: lxsd v20,0(0) */
- .long 0xe68a0002 /* <+3704>: lxsd v20,0(r10) */
- .long 0xe680000a /* <+3708>: lxsd v20,8(0) */
- .long 0xe68a000a /* <+3712>: lxsd v20,8(r10) */
- .long 0xe680fffa /* <+3716>: lxsd v20,-8(0) */
- .long 0xe68afffa /* <+3720>: lxsd v20,-8(r10) */
- .long 0xe6807ffe /* <+3724>: lxsd v20,32764(0) */
- .long 0xe68a7ffe /* <+3728>: lxsd v20,32764(r10) */
- .long 0xe6808002 /* <+3732>: lxsd v20,-32768(0) */
- .long 0xe68a8002 /* <+3736>: lxsd v20,-32768(r10) */
- .long 0xe7c00003 /* <+3740>: lxssp v30,0(0) */
- .long 0xe7cb0003 /* <+3744>: lxssp v30,0(r11) */
- .long 0xe7c0000b /* <+3748>: lxssp v30,8(0) */
- .long 0xe7cb000b /* <+3752>: lxssp v30,8(r11) */
- .long 0xe7c0fffb /* <+3756>: lxssp v30,-8(0) */
- .long 0xe7cbfffb /* <+3760>: lxssp v30,-8(r11) */
- .long 0xe7c07fff /* <+3764>: lxssp v30,32764(0) */
- .long 0xe7cb7fff /* <+3768>: lxssp v30,32764(r11) */
- .long 0xe7c08003 /* <+3772>: lxssp v30,-32768(0) */
- .long 0xe7cb8003 /* <+3776>: lxssp v30,-32768(r11) */
- .long 0xf5000009 /* <+3780>: lxv vs40,0(0) */
- .long 0xf50c0009 /* <+3784>: lxv vs40,0(r12) */
- .long 0xf5000019 /* <+3788>: lxv vs40,16(0) */
- .long 0xf50c0019 /* <+3792>: lxv vs40,16(r12) */
- .long 0xf500fff9 /* <+3796>: lxv vs40,-16(0) */
- .long 0xf54cfff1 /* <+3800>: lxv vs10,-16(r12) */
- .long 0xf5407ff1 /* <+3804>: lxv vs10,32752(0) */
- .long 0xf54c7ff1 /* <+3808>: lxv vs10,32752(r12) */
- .long 0xf5408001 /* <+3812>: lxv vs10,-32768(0) */
- .long 0xf54c8001 /* <+3816>: lxv vs10,-32768(r12) */
- .long 0xf6a00002 /* <+3820>: stxsd v21,0(0) */
- .long 0xf6aa0002 /* <+3824>: stxsd v21,0(r10) */
- .long 0xf6a0000a /* <+3828>: stxsd v21,8(0) */
- .long 0xf6aa000a /* <+3832>: stxsd v21,8(r10) */
- .long 0xf6a0fffa /* <+3836>: stxsd v21,-8(0) */
- .long 0xf6aafffa /* <+3840>: stxsd v21,-8(r10) */
- .long 0xf6a07ffe /* <+3844>: stxsd v21,32764(0) */
- .long 0xf6aa7ffe /* <+3848>: stxsd v21,32764(r10) */
- .long 0xf6a08002 /* <+3852>: stxsd v21,-32768(0) */
- .long 0xf6aa8002 /* <+3856>: stxsd v21,-32768(r10) */
- .long 0xf7e00003 /* <+3860>: stxssp v31,0(0) */
- .long 0xf7eb0003 /* <+3864>: stxssp v31,0(r11) */
- .long 0xf7e0000b /* <+3868>: stxssp v31,8(0) */
- .long 0xf7eb000b /* <+3872>: stxssp v31,8(r11) */
- .long 0xf7e0fffb /* <+3876>: stxssp v31,-8(0) */
- .long 0xf7ebfffb /* <+3880>: stxssp v31,-8(r11) */
- .long 0xf7e07fff /* <+3884>: stxssp v31,32764(0) */
- .long 0xf7eb7fff /* <+3888>: stxssp v31,32764(r11) */
- .long 0xf7e08003 /* <+3892>: stxssp v31,-32768(0) */
- .long 0xf7eb8003 /* <+3896>: stxssp v31,-32768(r11) */
- .long 0xf520000d /* <+3900>: stxv vs41,0(0) */
- .long 0xf52c000d /* <+3904>: stxv vs41,0(r12) */
- .long 0xf520001d /* <+3908>: stxv vs41,16(0) */
- .long 0xf52c001d /* <+3912>: stxv vs41,16(r12) */
- .long 0xf520fffd /* <+3916>: stxv vs41,-16(0) */
- .long 0xf56cfff5 /* <+3920>: stxv vs11,-16(r12) */
- .long 0xf5607ff5 /* <+3924>: stxv vs11,32752(0) */
- .long 0xf56c7ff5 /* <+3928>: stxv vs11,32752(r12) */
- .long 0xf5608005 /* <+3932>: stxv vs11,-32768(0) */
- .long 0xf56c8005 /* <+3936>: stxv vs11,-32768(r12) */
- .long 0xf296c0d0 /* <+3940>: xxperm vs20,vs22,vs24 */
- .long 0xf10a60d7 /* <+3944>: xxperm vs40,vs42,vs44 */
- .long 0xf2b7c9d0 /* <+3948>: xxpermr vs21,vs23,vs25 */
- .long 0xf12b69d7 /* <+3952>: xxpermr vs41,vs43,vs45 */
- .long 0x7e8c06f4 /* <+3956>: extswsli r12,r20,0 */
- .long 0x7e8c0ef4 /* <+3960>: extswsli r12,r20,1 */
- .long 0x7e8cfef6 /* <+3964>: extswsli r12,r20,63 */
- .long 0x7ead06f5 /* <+3968>: extswsli. r13,r21,0 */
- .long 0x7ead0ef5 /* <+3972>: extswsli. r13,r21,1 */
- .long 0x7eadfef7 /* <+3976>: extswsli. r13,r21,63 */
- .long 0x11d6b885 /* <+3980>: vrlwmi v14,v22,v23 */
- .long 0x11f7c0c5 /* <+3984>: vrldmi v15,v23,v24 */
- .long 0x1218c985 /* <+3988>: vrlwnm v16,v24,v25 */
- .long 0x1239d1c5 /* <+3992>: vrldnm v17,v25,v26 */
- .long 0x125addcc /* <+3996>: vbpermd v18,v26,v27 */
- .long 0x1266a602 /* <+4000>: vnegw v19,v20 */
- .long 0x1287ae02 /* <+4004>: vnegd v20,v21 */
- .long 0x12a8b602 /* <+4008>: vprtybw v21,v22 */
- .long 0x12c9be02 /* <+4012>: vprtybd v22,v23 */
- .long 0x12eac602 /* <+4016>: vprtybq v23,v24 */
- .long 0x1310ce02 /* <+4020>: vextsb2w v24,v25 */
- .long 0x1331d602 /* <+4024>: vextsh2w v25,v26 */
- .long 0x1358de02 /* <+4028>: vextsb2d v26,v27 */
- .long 0x1379e602 /* <+4032>: vextsh2d v27,v28 */
- .long 0x139aee02 /* <+4036>: vextsw2d v28,v29 */
- .long 0x13bcf602 /* <+4040>: vctzb v29,v30 */
- .long 0x13ddfe02 /* <+4044>: vctzh v30,v31 */
- .long 0x13fef602 /* <+4048>: vctzw v31,v30 */
- .long 0x13dfee02 /* <+4052>: vctzd v30,v29 */
- .long 0x7d40a61a /* <+4056>: lxsibzx vs10,0,r20 */
- .long 0x7e4aa61b /* <+4060>: lxsibzx vs50,r10,r20 */
- .long 0x7d60ae5a /* <+4064>: lxsihzx vs11,0,r21 */
- .long 0x7e6bae5b /* <+4068>: lxsihzx vs51,r11,r21 */
- .long 0x7d80b71a /* <+4072>: stxsibx vs12,0,r22 */
- .long 0x7e8cb71b /* <+4076>: stxsibx vs52,r12,r22 */
- .long 0x7da0bf5a /* <+4080>: stxsihx vs13,0,r23 */
- .long 0x7eadbf5b /* <+4084>: stxsihx vs53,r13,r23 */
- .long 0x114b6370 /* <+4088>: maddhd r10,r11,r12,r13 */
- .long 0x1295b5f1 /* <+4092>: maddhdu r20,r21,r22,r23 */
- .long 0x10432173 /* <+4096>: maddld r2,r3,r4,r5 */
- .long 0xf00aa1d8 /* <+4100>: xscmpexpdp cr0,vs10,vs20 */
- .long 0xf38891de /* <+4104>: xscmpexpdp cr7,vs40,vs50 */
- .long 0xf12baf2d /* <+4108>: xsiexpdp vs41,r11,r21 */
- .long 0xf07f5da8 /* <+4112>: xststdcdp cr0,vs11,127 */
- .long 0xf3ff4daa /* <+4116>: xststdcdp cr7,vs41,127 */
- .long 0xf07f5ca8 /* <+4120>: xststdcsp cr0,vs11,127 */
- .long 0xf3ff4caa /* <+4124>: xststdcsp cr7,vs41,127 */
- .long 0xf1a05d6e /* <+4128>: xsxexpdp r13,vs43 */
- .long 0xf1c1656e /* <+4132>: xsxsigdp r14,vs44 */
- .long 0xf1ae7fc7 /* <+4136>: xviexpdp vs45,vs46,vs47 */
- .long 0xf1cf86c7 /* <+4140>: xviexpsp vs46,vs47,vs48 */
- .long 0xf2c0bfab /* <+4144>: xvtstdcdp vs54,vs55,0 */
- .long 0xf2dfbfef /* <+4148>: xvtstdcdp vs54,vs55,127 */
- .long 0xf2e0c6ab /* <+4152>: xvtstdcsp vs55,vs56,0 */
- .long 0xf2ffc6ef /* <+4156>: xvtstdcsp vs55,vs56,127 */
- .long 0xf320d76f /* <+4160>: xvxexpdp vs57,vs58 */
- .long 0xf348df6f /* <+4164>: xvxexpsp vs58,vs59 */
- .long 0xf361e76f /* <+4168>: xvxsigdp vs59,vs60 */
- .long 0xf389ef6f /* <+4172>: xvxsigsp vs60,vs61 */
- .long 0x7c0639c0 /* <+4176>: cmpeqb cr0,r6,r7 */
- .long 0x7f8639c0 /* <+4180>: cmpeqb cr7,r6,r7 */
- .long 0x7c084980 /* <+4184>: cmprb cr0,0,r8,r9 */
- .long 0x7f884980 /* <+4188>: cmprb cr7,0,r8,r9 */
- .long 0x7c284980 /* <+4192>: cmprb cr0,1,r8,r9 */
- .long 0x7fa84980 /* <+4196>: cmprb cr7,1,r8,r9 */
- .long 0x7de00100 /* <+4200>: setb r15,cr0 */
- .long 0x7dfc0100 /* <+4204>: setb r15,cr7 */
- .long 0x7f40521a /* <+4208>: lxvl vs26,0,r10 */
- .long 0x7f14521b /* <+4212>: lxvl vs56,r20,r10 */
- .long 0x7f605b1a /* <+4216>: stxvl vs27,0,r11 */
- .long 0x7f355b1b /* <+4220>: stxvl vs57,r21,r11 */
- .long 0x1280f602 /* <+4224>: vclzlsbb r20,v30 */
- .long 0x12a1fe02 /* <+4228>: vctzlsbb r21,v31 */
- .long 0x114b6007 /* <+4232>: vcmpneb v10,v11,v12 */
- .long 0x1295b407 /* <+4236>: vcmpneb. v20,v21,v22 */
- .long 0x116c6847 /* <+4240>: vcmpneh v11,v12,v13 */
- .long 0x12b6bc47 /* <+4244>: vcmpneh. v21,v22,v23 */
- .long 0x118d7087 /* <+4248>: vcmpnew v12,v13,v14 */
- .long 0x12d7c487 /* <+4252>: vcmpnew. v22,v23,v24 */
- .long 0x11ae7907 /* <+4256>: vcmpnezb v13,v14,v15 */
- .long 0x12f8cd07 /* <+4260>: vcmpnezb. v23,v24,v25 */
- .long 0x11cf8147 /* <+4264>: vcmpnezh v14,v15,v16 */
- .long 0x1319d547 /* <+4268>: vcmpnezh. v24,v25,v26 */
- .long 0x11f08987 /* <+4272>: vcmpnezw v15,v16,v17 */
- .long 0x133add87 /* <+4276>: vcmpnezw. v25,v26,v27 */
- .long 0x1211560d /* <+4280>: vextublx r16,r17,v10 */
- .long 0x12325f0d /* <+4284>: vextubrx r17,r18,v11 */
- .long 0x1253664d /* <+4288>: vextuhlx r18,r19,v12 */
- .long 0x12746f4d /* <+4292>: vextuhrx r19,r20,v13 */
- .long 0x1295768d /* <+4296>: vextuwlx r20,r21,v14 */
- .long 0x12b67f8d /* <+4300>: vextuwrx r21,r22,v15 */
- .long 0xec001d46 /* <+4304>: dtstsfi cr0,0,f3 */
- .long 0xefbf1d46 /* <+4308>: dtstsfi cr7,63,f3 */
- .long 0xfc002546 /* <+4312>: dtstsfiq cr0,0,f4 */
- .long 0xffbf2546 /* <+4316>: dtstsfiq cr7,63,f4 */
- .long 0xf110956f /* <+4320>: xscvhpdp vs40,vs50 */
- .long 0xf1319d6f /* <+4324>: xscvdphp vs41,vs51 */
- .long 0xf158a76f /* <+4328>: xvcvhpsp vs42,vs52 */
- .long 0xf179af6f /* <+4332>: xvcvsphp vs43,vs53 */
- .long 0x4c600004 /* <+4336>: addpcis r3,0 */
- .long 0x4c600004 /* <+4340>: addpcis r3,0 */
- .long 0x4c800005 /* <+4344>: addpcis r4,1 */
- .long 0x4c800005 /* <+4348>: addpcis r4,1 */
- .long 0x4cbfffc4 /* <+4352>: addpcis r5,-2 */
- .long 0x4cbfffc4 /* <+4356>: addpcis r5,-2 */
- .long 0x4cdf7fc5 /* <+4360>: addpcis r6,32767 */
- .long 0x4cdf7fc5 /* <+4364>: addpcis r6,32767 */
- .long 0x4ce08004 /* <+4368>: addpcis r7,-32768 */
- .long 0x4ce08004 /* <+4372>: addpcis r7,-32768 */
- .long 0x7c0002a4 /* <+4376>: slbsync */
- .long 0x7d405ba4 /* <+4380>: slbieg r10,r11 */
- .long 0x7c602726 /* <+4384>: slbmfee r3,r4 */
- .long 0x7c602726 /* <+4388>: slbmfee r3,r4 */
- .long 0x7c612726 /* <+4392>: slbmfee r3,r4,1 */
- .long 0x7c802ea6 /* <+4396>: slbmfev r4,r5 */
- .long 0x7c802ea6 /* <+4400>: slbmfev r4,r5 */
- .long 0x7c812ea6 /* <+4404>: slbmfev r4,r5,1 */
- .long 0x7c801a64 /* <+4408>: tlbie r3,r4 */
- .long 0x7c801a64 /* <+4412>: tlbie r3,r4 */
- .long 0x7c8f1a64 /* <+4416>: tlbie r3,r4,3,1,1 */
- .long 0x7c001a24 /* <+4420>: tlbiel r3 */
- .long 0x7c001a24 /* <+4424>: tlbiel r3 */
- .long 0x7c8f1a24 /* <+4428>: tlbiel r3,r4,3,1,1 */
- .long 0x7c2c6e0c /* <+4432>: copy r12,r13 */
- .long 0x7c2a5f0d /* <+4436>: paste. r10,r11 */
- .long 0x7c00068c /* <+4440>: cpabort */
- .long 0x7c0004ac /* <+4444>: hwsync */
- .long 0x7c0004ac /* <+4448>: hwsync */
- .long 0x7c0004ac /* <+4452>: hwsync */
- .long 0x7c2004ac /* <+4456>: lwsync */
- .long 0x7c2004ac /* <+4460>: lwsync */
- .long 0x7c4004ac /* <+4464>: ptesync */
- .long 0x7c4004ac /* <+4468>: ptesync */
- .long 0x7e8004cc /* <+4472>: ldat r20,0,0 */
- .long 0x7e8ae4cc /* <+4476>: ldat r20,r10,28 */
- .long 0x7ea0048c /* <+4480>: lwat r21,0,0 */
- .long 0x7eabe48c /* <+4484>: lwat r21,r11,28 */
- .long 0x7ec005cc /* <+4488>: stdat r22,0,0 */
- .long 0x7ecce5cc /* <+4492>: stdat r22,r12,28 */
- .long 0x7ee0058c /* <+4496>: stwat r23,0,0 */
- .long 0x7eede58c /* <+4500>: stwat r23,r13,28 */
- .long 0x4c000264 /* <+4504>: urfid */
- .long 0x7c00f6e4 /* <+4508>: rmieg r30 */
- .long 0x7d407a6a /* <+4512>: ldmx r10,0,r15 */
- .long 0x7d437a6a /* <+4516>: ldmx r10,r3,r15 */
- .long 0x4c0002e4 /* <+4520>: stop */
- .long 0x7c00003c /* <+4524>: wait */
- .long 0x7c00003c /* <+4528>: wait */
- .long 0x7c6005e6 /* <+4532>: darn r3,0 */
- .long 0x7c6105e6 /* <+4536>: darn r3,1 */
- .long 0x7c6205e6 /* <+4540>: darn r3,2 */
- .long 0x7c000480 /* <+4544>: mcrxrx cr0 */
- .long 0x7f800480 /* <+4548>: mcrxrx cr7 */
- .long 0x1295b744 /* <+4552>: vslv v20,v21,v22 */
- .long 0x12f8cf04 /* <+4556>: vsrv v23,v24,v25 */
- .long 0x7c0006ec /* <+4560>: msgsync */
- .long 0xf3c8901e /* <+4564>: xscmpeqdp vs30,vs40,vs50 */
- .long 0xf3e9985e /* <+4568>: xscmpgtdp vs31,vs41,vs51 */
- .long 0xf00aa09f /* <+4572>: xscmpgedp vs32,vs42,vs52 */
- .long 0xf04cb447 /* <+4576>: xsmincdp vs34,vs44,vs54 */
- .long 0xf06dbc07 /* <+4580>: xsmaxcdp vs35,vs45,vs55 */
- .long 0xf08ec4c7 /* <+4584>: xsminjdp vs36,vs46,vs56 */
- .long 0xf0afcc87 /* <+4588>: xsmaxjdp vs37,vs47,vs57 */
- .long 0x1295b5e3 /* <+4592>: vmsumudm v20,v21,v22,v23 */
- .long 0x7d6c6954 /* <+4596>: addex r11,r12,r13,0 */
- .long 0x7d6c6b54 /* <+4600>: addex r11,r12,r13,1 */
- .long 0x7d6c6d54 /* <+4604>: addex r11,r12,r13,2 */
- .long 0xff20048e /* <+4608>: mffs f25 */
- .long 0xff20048f /* <+4612>: mffs. f25 */
- .long 0xff41048e /* <+4616>: mffsce f26 */
- .long 0xff74a48e /* <+4620>: mffscdrn f27,f20 */
- .long 0xff95048e /* <+4624>: mffscdrni f28,0 */
- .long 0xff953c8e /* <+4628>: mffscdrni f28,7 */
- .long 0xffb6ac8e /* <+4632>: mffscrn f29,f21 */
- .long 0xffd7048e /* <+4636>: mffscrni f30,0 */
- .long 0xffd71c8e /* <+4640>: mffscrni f30,3 */
- .long 0xfff8048e /* <+4644>: mffsl f31 */
- .long 0x7d4006a4 /* <+4648>: slbiag r10 */
-
-## altivec3.d
- .long 0x117e0001 /* <+4652>: vmul10cuq v11,v30 */
- .long 0x13c1b807 /* <+4656>: vcmpneb v30,v1,v23 */
- .long 0x13d3f77b /* <+4660>: vpermr v30,v19,v30,v29 */
- .long 0x12948841 /* <+4664>: vmul10ecuq v20,v20,v17 */
- .long 0x1373f847 /* <+4668>: vcmpneh v27,v19,v31 */
- .long 0x10c9b885 /* <+4672>: vrlwmi v6,v9,v23 */
- .long 0x12da0887 /* <+4676>: vcmpnew v22,v26,v1 */
- .long 0x131ec8c5 /* <+4680>: vrldmi v24,v30,v25 */
- .long 0x127db107 /* <+4684>: vcmpnezb v19,v29,v22 */
- .long 0x11179947 /* <+4688>: vcmpnezh v8,v23,v19 */
- .long 0x13785985 /* <+4692>: vrlwnm v27,v24,v11 */
- .long 0x12ad5187 /* <+4696>: vcmpnezw v21,v13,v10 */
- .long 0x10b4e9c5 /* <+4700>: vrldnm v5,v20,v29 */
- .long 0x13d30201 /* <+4704>: vmul10uq v30,v19 */
- .long 0x130caa0d /* <+4708>: vextractub v24,v21,12 */
- .long 0x1013e241 /* <+4712>: vmul10euq v0,v19,v28 */
- .long 0x114c1a4d /* <+4716>: vextractuh v10,v3,12 */
- .long 0x1387628d /* <+4720>: vextractuw v28,v12,7 */
- .long 0x13c1dacd /* <+4724>: vextractd v30,v27,1 */
- .long 0x1324fb0d /* <+4728>: vinsertb v25,v31,4 */
- .long 0x12aef341 /* <+4732>: bcdcpsgn. v21,v14,v30 */
- .long 0x12c5934d /* <+4736>: vinserth v22,v18,5 */
- .long 0x13a1b38d /* <+4740>: vinsertw v29,v22,1 */
- .long 0x13a76bcd /* <+4744>: vinsertd v29,v13,7 */
- .long 0x12d94407 /* <+4748>: vcmpneb. v22,v25,v8 */
- .long 0x120fac47 /* <+4752>: vcmpneh. v16,v15,v21 */
- .long 0x12d5fc81 /* <+4756>: bcdus. v22,v21,v31 */
- .long 0x102c6487 /* <+4760>: vcmpnew. v1,v12,v12 */
- .long 0x10a346c1 /* <+4764>: bcds. v5,v3,v8,1 */
- .long 0x13760d01 /* <+4768>: bcdtrunc. v27,v22,v1,0 */
- .long 0x105a0507 /* <+4772>: vcmpnezb. v2,v26,v0 */
- .long 0x134e3d41 /* <+4776>: bcdutrunc. v26,v14,v7 */
- .long 0x12056547 /* <+4780>: vcmpnezh. v16,v5,v12 */
- .long 0x13002d81 /* <+4784>: bcdctsq. v24,v5 */
- .long 0x10e20581 /* <+4788>: bcdcfsq. v7,v0,0 */
- .long 0x13c46781 /* <+4792>: bcdctz. v30,v12,1 */
- .long 0x1225bd81 /* <+4796>: bcdctn. v17,v23 */
- .long 0x10867f81 /* <+4800>: bcdcfz. v4,v15,1 */
- .long 0x13a72f81 /* <+4804>: bcdcfn. v29,v5,1 */
- .long 0x137f6581 /* <+4808>: bcdsetsgn. v27,v12,0 */
- .long 0x11dccd87 /* <+4812>: vcmpnezw. v14,v28,v25 */
- .long 0x104237c1 /* <+4816>: bcdsr. v2,v2,v6,1 */
- .long 0x13202dcc /* <+4820>: vbpermd v25,v0,v5 */
- .long 0x1380ce02 /* <+4824>: vclzlsbb r28,v25 */
- .long 0x1041c602 /* <+4828>: vctzlsbb r2,v24 */
- .long 0x12a65e02 /* <+4832>: vnegw v21,v11 */
- .long 0x1227de02 /* <+4836>: vnegd v17,v27 */
- .long 0x13e8be02 /* <+4840>: vprtybw v31,v23 */
- .long 0x12a9be02 /* <+4844>: vprtybd v21,v23 */
- .long 0x12aa9602 /* <+4848>: vprtybq v21,v18 */
- .long 0x13d02602 /* <+4852>: vextsb2w v30,v4 */
- .long 0x1071d602 /* <+4856>: vextsh2w v3,v26 */
- .long 0x11788e02 /* <+4860>: vextsb2d v11,v17 */
- .long 0x10b95602 /* <+4864>: vextsh2d v5,v10 */
- .long 0x11bace02 /* <+4868>: vextsw2d v13,v25 */
- .long 0x133c1602 /* <+4872>: vctzb v25,v2 */
- .long 0x101d1e02 /* <+4876>: vctzh v0,v3 */
- .long 0x12de3602 /* <+4880>: vctzw v22,v6 */
- .long 0x135fc602 /* <+4884>: vctzd v26,v24 */
- .long 0x10df160d /* <+4888>: vextublx r6,r31,v2 */
- .long 0x11a0964d /* <+4892>: vextuhlx r13,r0,v18 */
- .long 0x11defe8d /* <+4896>: vextuwlx r14,r30,v31 */
- .long 0x11ec7704 /* <+4900>: vsrv v15,v12,v14 */
- .long 0x128af70d /* <+4904>: vextubrx r20,r10,v30 */
- .long 0x12b51744 /* <+4908>: vslv v21,v21,v2 */
- .long 0x11e90f4d /* <+4912>: vextuhrx r15,r9,v1 */
- .long 0x12b1878d /* <+4916>: vextuwrx r21,r17,v16 */
- .long 0x1295b5e3 /* <+4920>: vmsumudm v20,v21,v22,v23 */
-## vsx3.d
- .long 0x7c46ca19 /* <+4924>: lxvx vs34,r6,r25 */
- .long 0x7e805218 /* <+4928>: lxvx vs20,0,r10 */
- .long 0x7e98521a /* <+4932>: lxvl vs20,r24,r10 */
- .long 0x7ec0ea1b /* <+4936>: lxvl vs54,0,r29 */
- .long 0x7f149a5a /* <+4940>: lxvll vs24,r20,r19 */
- .long 0x7c40725b /* <+4944>: lxvll vs34,0,r14 */
- .long 0x7ec20266 /* <+4948>: mfvsrld r2,vs22 */
- .long 0x7f5acad9 /* <+4952>: lxvwsx vs58,r26,r25 */
- .long 0x7ee0ead9 /* <+4956>: lxvwsx vs55,0,r29 */
- .long 0x7dd52318 /* <+4960>: stxvx vs14,r21,r4 */
- .long 0x7fc0b318 /* <+4964>: stxvx vs30,0,r22 */
- .long 0x7c1a231a /* <+4968>: stxvl vs0,r26,r4 */
- .long 0x7ca0b31b /* <+4972>: stxvl vs37,0,r22 */
- .long 0x7f0a0326 /* <+4976>: mtvsrws vs24,r10 */
- .long 0x7fd57b5a /* <+4980>: stxvll vs30,r21,r15 */
- .long 0x7ce0735b /* <+4984>: stxvll vs39,0,r14 */
- .long 0x7d862b66 /* <+4988>: mtvsrdd vs12,r6,r5 */
- .long 0x7cc0ab67 /* <+4992>: mtvsrdd vs38,0,r21 */
- .long 0x7f7c361b /* <+4996>: lxsibzx vs59,r28,r6 */
- .long 0x7fc0461a /* <+5000>: lxsibzx vs30,0,r8 */
- .long 0x7d578e59 /* <+5004>: lxvh8x vs42,r23,r17 */
- .long 0x7c802e59 /* <+5008>: lxvh8x vs36,0,r5 */
- .long 0x7d895e5a /* <+5012>: lxsihzx vs12,r9,r11 */
- .long 0x7e206e5b /* <+5016>: lxsihzx vs49,0,r13 */
- .long 0x7ca39ed9 /* <+5020>: lxvb16x vs37,r3,r19 */
- .long 0x7c00f6d8 /* <+5024>: lxvb16x vs0,0,r30 */
- .long 0x7c5e371a /* <+5028>: stxsibx vs2,r30,r6 */
- .long 0x7d806f1a /* <+5032>: stxsibx vs12,0,r13 */
- .long 0x7e1d4758 /* <+5036>: stxvh8x vs16,r29,r8 */
- .long 0x7ee05759 /* <+5040>: stxvh8x vs55,0,r10 */
- .long 0x7c42bf5b /* <+5044>: stxsihx vs34,r2,r23 */
- .long 0x7f80bf5b /* <+5048>: stxsihx vs60,0,r23 */
- .long 0x7eee67d8 /* <+5052>: stxvb16x vs23,r14,r12 */
- .long 0x7e602fd8 /* <+5056>: stxvb16x vs19,0,r5 */
- .long 0xe7000002 /* <+5060>: lxsd v24,0(0) */
- .long 0xe5f50012 /* <+5064>: lxsd v15,16(r21) */
- .long 0xe4c00003 /* <+5068>: lxssp v6,0(0) */
- .long 0xe6e90013 /* <+5072>: lxssp v23,16(r9) */
- .long 0xf253081e /* <+5076>: xscmpeqdp vs18,vs51,vs33 */
- .long 0xf05a105a /* <+5080>: xscmpgtdp vs2,vs26,vs34 */
- .long 0xf0baa098 /* <+5084>: xscmpgedp vs5,vs26,vs20 */
- .long 0xf18a58d3 /* <+5088>: xxperm vs44,vs10,vs43 */
- .long 0xf13429d1 /* <+5092>: xxpermr vs41,vs20,vs5 */
- .long 0xf212b9da /* <+5096>: xscmpexpdp cr4,vs18,vs55 */
- .long 0xf2e32a96 /* <+5100>: xxextractuw vs23,vs37,3 */
- .long 0xf2c75ad1 /* <+5104>: xxspltib vs54,235 */
- .long 0xf1e4f2d4 /* <+5108>: xxinsertw vs15,vs30,4 */
- .long 0xf18b3c00 /* <+5112>: xsmaxcdp vs12,vs11,vs7 */
- .long 0xf019c441 /* <+5116>: xsmincdp vs32,vs25,vs24 */
- .long 0xf3356484 /* <+5120>: xsmaxjdp vs25,vs53,vs12 */
- .long 0xf17f24aa /* <+5124>: xststdcsp cr2,vs36,127 */
- .long 0xf0156cc3 /* <+5128>: xsminjdp vs32,vs21,vs45 */
- .long 0xf220956e /* <+5132>: xsxexpdp r17,vs50 */
- .long 0xf0e1456e /* <+5136>: xsxsigdp r7,vs40 */
- .long 0xf2d0156f /* <+5140>: xscvhpdp vs54,vs34 */
- .long 0xf351b56f /* <+5144>: xscvdphp vs58,vs54 */
- .long 0xf07f35aa /* <+5148>: xststdcdp cr0,vs38,127 */
- .long 0xf31faeef /* <+5152>: xvtstdcsp vs56,vs53,127 */
- .long 0xf2d4a6c3 /* <+5156>: xviexpsp vs54,vs20,vs52 */
- .long 0xf33cef2d /* <+5160>: xsiexpdp vs57,r28,r29 */
- .long 0xf020a76c /* <+5164>: xvxexpdp vs1,vs20 */
- .long 0xf2c1df6f /* <+5168>: xvxsigdp vs54,vs59 */
- .long 0xf2472f6e /* <+5172>: xxbrh vs18,vs37 */
- .long 0xf1c80f6c /* <+5176>: xvxexpsp vs14,vs1 */
- .long 0xf2896f6d /* <+5180>: xvxsigsp vs52,vs13 */
- .long 0xf26f2f6c /* <+5184>: xxbrw vs19,vs5 */
- .long 0xf277bf6f /* <+5188>: xxbrd vs51,vs55 */
- .long 0xf0788f6d /* <+5192>: xvcvhpsp vs35,vs17 */
- .long 0xf1f96f6e /* <+5196>: xvcvsphp vs15,vs45 */
- .long 0xf23fff6c /* <+5200>: xxbrq vs17,vs31 */
- .long 0xf21f67ec /* <+5204>: xvtstdcdp vs16,vs12,127 */
- .long 0xf36947c0 /* <+5208>: xviexpdp vs27,vs9,vs8 */
- .long 0xf4800001 /* <+5212>: lxv vs4,0(0) */
- .long 0xf5140019 /* <+5216>: lxv vs40,16(r20) */
- .long 0xf640000d /* <+5220>: stxv vs50,0(0) */
- .long 0xf5100015 /* <+5224>: stxv vs8,16(r16) */
- .long 0xf4600002 /* <+5228>: stxsd v3,0(0) */
- .long 0xf6220012 /* <+5232>: stxsd v17,16(r2) */
- .long 0xf5a00003 /* <+5236>: stxssp v13,0(0) */
- .long 0xf62d0013 /* <+5240>: stxssp v17,16(r13) */
- .long 0xfd0a9008 /* <+5244>: xsaddqp v8,v10,v18 */
- .long 0xfca1e809 /* <+5248>: xsaddqpo v5,v1,v29 */
- .long 0xfd80960a /* <+5252>: xsrqpi 0,v12,v18,3 */
- .long 0xffe1980b /* <+5256>: xsrqpix 1,v31,v19,0 */
- .long 0xfdc13048 /* <+5260>: xsmulqp v14,v1,v6 */
- .long 0xfe27d849 /* <+5264>: xsmulqpo v17,v7,v27 */
- .long 0xfc80584a /* <+5268>: xsrqpxp 0,v4,v11,0 */
- .long 0xffb7e0c8 /* <+5272>: xscpsgnqp v29,v23,v28 */
- .long 0xff8dd908 /* <+5276>: xscmpoqp cr7,v13,v27 */
- .long 0xfe953148 /* <+5280>: xscmpexpqp cr5,v21,v6 */
- .long 0xfc532308 /* <+5284>: xsmaddqp v2,v19,v4 */
- .long 0xffc78309 /* <+5288>: xsmaddqpo v30,v7,v16 */
- .long 0xfebe7b48 /* <+5292>: xsmsubqp v21,v30,v15 */
- .long 0xfd91f349 /* <+5296>: xsmsubqpo v12,v17,v30 */
- .long 0xfcde6388 /* <+5300>: xsnmaddqp v6,v30,v12 */
- .long 0xfd966389 /* <+5304>: xsnmaddqpo v12,v22,v12 */
- .long 0xfd5ddbc8 /* <+5308>: xsnmsubqp v10,v29,v27 */
- .long 0xffbd6bc9 /* <+5312>: xsnmsubqpo v29,v29,v13 */
- .long 0xfe7b2408 /* <+5316>: xssubqp v19,v27,v4 */
- .long 0xfda80c09 /* <+5320>: xssubqpo v13,v8,v1 */
- .long 0xfd03dc48 /* <+5324>: xsdivqp v8,v3,v27 */
- .long 0xff14dc49 /* <+5328>: xsdivqpo v24,v20,v27 */
- .long 0xff8e2508 /* <+5332>: xscmpuqp cr7,v14,v4 */
- .long 0xfe7f1588 /* <+5336>: xststdcqp cr4,v2,127 */
- .long 0xffe0b648 /* <+5340>: xsabsqp v31,v22 */
- .long 0xff221e48 /* <+5344>: xsxexpqp v25,v3 */
- .long 0xfd48e648 /* <+5348>: xsnabsqp v10,v28 */
- .long 0xfe70fe48 /* <+5352>: xsnegqp v19,v31 */
- .long 0xfd726e48 /* <+5356>: xsxsigqp v11,v13 */
- .long 0xfdbb7648 /* <+5360>: xssqrtqp v13,v14 */
- .long 0xfc3bde49 /* <+5364>: xssqrtqpo v1,v27 */
- .long 0xfc613e88 /* <+5368>: xscvqpuwz v3,v7 */
- .long 0xfe829688 /* <+5372>: xscvudqp v20,v18 */
- .long 0xffa9ee88 /* <+5376>: xscvqpswz v29,v29 */
- .long 0xfc4ae688 /* <+5380>: xscvsdqp v2,v28 */
- .long 0xfef12688 /* <+5384>: xscvqpudz v23,v4 */
- .long 0xfc74a688 /* <+5388>: xscvqpdp v3,v20 */
- .long 0xfc341e89 /* <+5392>: xscvqpdpo v1,v3 */
- .long 0xfe766688 /* <+5396>: xscvdpqp v19,v12 */
- .long 0xfdb92688 /* <+5400>: xscvqpsdz v13,v4 */
- .long 0xfcf83ec8 /* <+5404>: xsiexpqp v7,v24,v7 */
diff --git a/gdb/testsuite/gdb.arch/powerpc-power7.exp b/gdb/testsuite/gdb.arch/powerpc-power7.exp
new file mode 100644
index 0000000..ae48eec
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-power7.exp
@@ -0,0 +1,164 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# Test PowerPC instructions disassembly.
+
+standard_testfile .s
+set objfile [standard_output_file ${testfile}.o]
+
+if {![istarget "powerpc*-*-*"]} then {
+ verbose "Skipping PowerPC instructions disassembly."
+ return
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC instructions disassembly"
+ return -1
+}
+
+clean_restart ${objfile}
+
+# Disassemble the function.
+set func ""
+
+gdb_test "set disassembler-options power7"
+set test "disass func"
+gdb_test_multiple $test $test {
+ -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
+ set func $expect_out(1,string)
+ pass $test
+ }
+}
+
+proc instr_to_patt {instr} {
+ global decimal hex
+ # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
+ return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]"
+}
+
+proc func_check {instr} {
+ global func
+
+ set test "found: $instr"
+ if [regexp -nocase -line [instr_to_patt $instr] $func] {
+ pass $test
+ } else {
+ fail $test
+ }
+}
+
+func_check "lxvd2x vs3,r4,r5"
+func_check "lxvd2x vs43,r4,r5"
+func_check "stxvd2x vs3,r4,r5"
+func_check "stxvd2x vs43,r4,r5"
+func_check "xxmrghd vs3,vs4,vs5"
+func_check "xxmrghd vs43,vs44,vs45"
+func_check "xxmrgld vs3,vs4,vs5"
+func_check "xxmrgld vs43,vs44,vs45"
+func_check "xxmrghd vs3,vs4,vs5"
+func_check "xxmrghd vs43,vs44,vs45"
+func_check "xxmrgld vs3,vs4,vs5"
+func_check "xxmrgld vs43,vs44,vs45"
+func_check "xxpermdi vs3,vs4,vs5,1"
+func_check "xxpermdi vs43,vs44,vs45,1"
+func_check "xxpermdi vs3,vs4,vs5,2"
+func_check "xxpermdi vs43,vs44,vs45,2"
+func_check "xvmovdp vs3,vs4"
+func_check "xvmovdp vs43,vs44"
+func_check "xvmovdp vs3,vs4"
+func_check "xvmovdp vs43,vs44"
+func_check "xvcpsgndp vs3,vs4,vs5"
+func_check "xvcpsgndp vs43,vs44,vs45"
+func_check "doze"
+func_check "nap"
+func_check "sleep"
+func_check "rvwinkle"
+func_check "prtyw r3,r4"
+func_check "prtyd r13,r14"
+func_check "mfcfar r10"
+func_check "mtcfar r11"
+func_check "cmpb r3,r4,r5"
+func_check "lwzcix r10,r11,r12"
+func_check "dadd f16,f17,f18"
+func_check "daddq f20,f22,f24"
+func_check "dss 3"
+func_check "dssall"
+func_check "dst r5,r4,1"
+func_check "dstt r8,r7,0"
+func_check "dstst r5,r6,3"
+func_check "dststt r4,r5,2"
+func_check "divwe r10,r11,r12"
+func_check "divwe. r11,r12,r13"
+func_check "divweo r12,r13,r14"
+func_check "divweo. r13,r14,r15"
+func_check "divweu r10,r11,r12"
+func_check "divweu. r11,r12,r13"
+func_check "divweuo r12,r13,r14"
+func_check "divweuo. r13,r14,r15"
+func_check "bpermd r7,r17,r27"
+func_check "popcntw r10,r20"
+func_check "popcntd r10,r20"
+func_check "ldbrx r20,r21,r22"
+func_check "stdbrx r20,r21,r22"
+func_check "lfiwzx f10,0,r10"
+func_check "lfiwzx f10,r9,r10"
+func_check "fcfids f4,f5"
+func_check "fcfids. f4,f5"
+func_check "fcfidus f4,f5"
+func_check "fcfidus. f4,f5"
+func_check "fctiwu f4,f5"
+func_check "fctiwu. f4,f5"
+func_check "fctiwuz f4,f5"
+func_check "fctiwuz. f4,f5"
+func_check "fctidu f4,f5"
+func_check "fctidu. f4,f5"
+func_check "fctiduz f4,f5"
+func_check "fctiduz. f4,f5"
+func_check "fcfidu f4,f5"
+func_check "fcfidu. f4,f5"
+func_check "ftdiv cr0,f10,f11"
+func_check "ftdiv cr7,f10,f11"
+func_check "ftsqrt cr0,f10"
+func_check "ftsqrt cr7,f10"
+func_check "dcbtt r8,r9"
+func_check "dcbtstt r8,r9"
+func_check "dcffix f10,f12"
+func_check "dcffix. f20,f22"
+func_check "fre f14,f15"
+func_check "fre. f14,f15"
+func_check "fres f14,f15"
+func_check "fres. f14,f15"
+func_check "frsqrte f14,f15"
+func_check "frsqrte. f14,f15"
+func_check "frsqrtes f14,f15"
+func_check "frsqrtes. f14,f15"
+func_check "isel r2,r3,r4,28"
+func_check "yield"
+func_check "yield"
+func_check "ori r2,r2,0"
+func_check "nop"
+func_check "nop"
+func_check "ori r2,r2,0"
+func_check "mdoio"
+func_check "mdoio"
+func_check "mdoom"
+func_check "mdoom"
+func_check "mfppr r10"
+func_check "mfppr32 r11"
+func_check "mtppr r12"
+func_check "mtppr32 r13"
+func_check "tlbie r10,r11"
diff --git a/gdb/testsuite/gdb.arch/powerpc-power7.s b/gdb/testsuite/gdb.arch/powerpc-power7.s
new file mode 100644
index 0000000..c7b1858
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-power7.s
@@ -0,0 +1,121 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2014-2017 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+ .text
+ .globl func
+func:
+ .long 0x7c642e98 /* lxvd2x vs3,r4,r5 */
+ .long 0x7d642e99 /* lxvd2x vs43,r4,r5 */
+ .long 0x7c642f98 /* stxvd2x vs3,r4,r5 */
+ .long 0x7d642f99 /* stxvd2x vs43,r4,r5 */
+ .long 0xf0642850 /* xxmrghd vs3,vs4,vs5 */
+ .long 0xf16c6857 /* xxmrghd vs43,vs44,vs45 */
+ .long 0xf0642b50 /* xxmrgld vs3,vs4,vs5 */
+ .long 0xf16c6b57 /* xxmrgld vs43,vs44,vs45 */
+ .long 0xf0642850 /* xxmrghd vs3,vs4,vs5 */
+ .long 0xf16c6857 /* xxmrghd vs43,vs44,vs45 */
+ .long 0xf0642b50 /* xxmrgld vs3,vs4,vs5 */
+ .long 0xf16c6b57 /* xxmrgld vs43,vs44,vs45 */
+ .long 0xf0642950 /* xxpermdi vs3,vs4,vs5,1 */
+ .long 0xf16c6957 /* xxpermdi vs43,vs44,vs45,1 */
+ .long 0xf0642a50 /* xxpermdi vs3,vs4,vs5,2 */
+ .long 0xf16c6a57 /* xxpermdi vs43,vs44,vs45,2 */
+ .long 0xf0642780 /* xvmovdp vs3,vs4 */
+ .long 0xf16c6787 /* xvmovdp vs43,vs44 */
+ .long 0xf0642780 /* xvmovdp vs3,vs4 */
+ .long 0xf16c6787 /* xvmovdp vs43,vs44 */
+ .long 0xf0642f80 /* xvcpsgndp vs3,vs4,vs5 */
+ .long 0xf16c6f87 /* xvcpsgndp vs43,vs44,vs45 */
+ .long 0x4c000324 /* doze */
+ .long 0x4c000364 /* nap */
+ .long 0x4c0003a4 /* sleep */
+ .long 0x4c0003e4 /* rvwinkle */
+ .long 0x7c830134 /* prtyw r3,r4 */
+ .long 0x7dcd0174 /* prtyd r13,r14 */
+ .long 0x7d5c02a6 /* mfcfar r10 */
+ .long 0x7d7c03a6 /* mtcfar r11 */
+ .long 0x7c832bf8 /* cmpb r3,r4,r5 */
+ .long 0x7d4b662a /* lwzcix r10,r11,r12 */
+ .long 0xee119004 /* dadd f16,f17,f18 */
+ .long 0xfe96c004 /* daddq f20,f22,f24 */
+ .long 0x7c60066c /* dss 3 */
+ .long 0x7e00066c /* dssall */
+ .long 0x7c2522ac /* dst r5,r4,1 */
+ .long 0x7e083aac /* dstt r8,r7,0 */
+ .long 0x7c6532ec /* dstst r5,r6,3 */
+ .long 0x7e442aec /* dststt r4,r5,2 */
+ .long 0x7d4b6356 /* divwe r10,r11,r12 */
+ .long 0x7d6c6b57 /* divwe. r11,r12,r13 */
+ .long 0x7d8d7756 /* divweo r12,r13,r14 */
+ .long 0x7dae7f57 /* divweo. r13,r14,r15 */
+ .long 0x7d4b6316 /* divweu r10,r11,r12 */
+ .long 0x7d6c6b17 /* divweu. r11,r12,r13 */
+ .long 0x7d8d7716 /* divweuo r12,r13,r14 */
+ .long 0x7dae7f17 /* divweuo. r13,r14,r15 */
+ .long 0x7e27d9f8 /* bpermd r7,r17,r27 */
+ .long 0x7e8a02f4 /* popcntw r10,r20 */
+ .long 0x7e8a03f4 /* popcntd r10,r20 */
+ .long 0x7e95b428 /* ldbrx r20,r21,r22 */
+ .long 0x7e95b528 /* stdbrx r20,r21,r22 */
+ .long 0x7d4056ee /* lfiwzx f10,0,r10 */
+ .long 0x7d4956ee /* lfiwzx f10,r9,r10 */
+ .long 0xec802e9c /* fcfids f4,f5 */
+ .long 0xec802e9d /* fcfids. f4,f5 */
+ .long 0xec802f9c /* fcfidus f4,f5 */
+ .long 0xec802f9d /* fcfidus. f4,f5 */
+ .long 0xfc80291c /* fctiwu f4,f5 */
+ .long 0xfc80291d /* fctiwu. f4,f5 */
+ .long 0xfc80291e /* fctiwuz f4,f5 */
+ .long 0xfc80291f /* fctiwuz. f4,f5 */
+ .long 0xfc802f5c /* fctidu f4,f5 */
+ .long 0xfc802f5d /* fctidu. f4,f5 */
+ .long 0xfc802f5e /* fctiduz f4,f5 */
+ .long 0xfc802f5f /* fctiduz. f4,f5 */
+ .long 0xfc802f9c /* fcfidu f4,f5 */
+ .long 0xfc802f9d /* fcfidu. f4,f5 */
+ .long 0xfc0a5900 /* ftdiv cr0,f10,f11 */
+ .long 0xff8a5900 /* ftdiv cr7,f10,f11 */
+ .long 0xfc005140 /* ftsqrt cr0,f10 */
+ .long 0xff805140 /* ftsqrt cr7,f10 */
+ .long 0x7e084a2c /* dcbtt r8,r9 */
+ .long 0x7e0849ec /* dcbtstt r8,r9 */
+ .long 0xed406644 /* dcffix f10,f12 */
+ .long 0xee80b645 /* dcffix. f20,f22 */
+ .long 0xfdc07830 /* fre f14,f15 */
+ .long 0xfdc07831 /* fre. f14,f15 */
+ .long 0xedc07830 /* fres f14,f15 */
+ .long 0xedc07831 /* fres. f14,f15 */
+ .long 0xfdc07834 /* frsqrte f14,f15 */
+ .long 0xfdc07835 /* frsqrte. f14,f15 */
+ .long 0xedc07834 /* frsqrtes f14,f15 */
+ .long 0xedc07835 /* frsqrtes. f14,f15 */
+ .long 0x7c43271e /* isel r2,r3,r4,28 */
+ .long 0x7f7bdb78 /* yield */
+ .long 0x7f7bdb78 /* yield */
+ .long 0x60420000 /* ori r2,r2,0 */
+ .long 0x60000000 /* nop */
+ .long 0x60000000 /* nop */
+ .long 0x60420000 /* ori r2,r2,0 */
+ .long 0x7fbdeb78 /* mdoio */
+ .long 0x7fbdeb78 /* mdoio */
+ .long 0x7fdef378 /* mdoom */
+ .long 0x7fdef378 /* mdoom */
+ .long 0x7d40e2a6 /* mfppr r10 */
+ .long 0x7d62e2a6 /* mfppr32 r11 */
+ .long 0x7d80e3a6 /* mtppr r12 */
+ .long 0x7da2e3a6 /* mtppr32 r13 */
+ .long 0x7d605264 /* tlbie r10,r11 */
diff --git a/gdb/testsuite/gdb.arch/powerpc-power8.exp b/gdb/testsuite/gdb.arch/powerpc-power8.exp
new file mode 100644
index 0000000..432dcb4
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-power8.exp
@@ -0,0 +1,248 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# Test PowerPC instructions disassembly.
+
+standard_testfile .s
+set objfile [standard_output_file ${testfile}.o]
+
+if {![istarget "powerpc*-*-*"]} then {
+ verbose "Skipping PowerPC instructions disassembly."
+ return
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC instructions disassembly"
+ return -1
+}
+
+clean_restart ${objfile}
+
+# Disassemble the function.
+set func ""
+
+gdb_test "set disassembler-options power8"
+set test "disass func"
+gdb_test_multiple $test $test {
+ -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
+ set func $expect_out(1,string)
+ pass $test
+ }
+}
+
+proc instr_to_patt {instr} {
+ global decimal hex
+ # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
+ return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]"
+}
+
+proc func_check {instr} {
+ global func
+
+ set test "found: $instr"
+ if [regexp -nocase -line [instr_to_patt $instr] $func] {
+ pass $test
+ } else {
+ fail $test
+ }
+}
+
+func_check "tabort. r5"
+func_check "tabortwc. 7,r8,r16"
+func_check "tabortdc. 20,r11,r10"
+func_check "tabortwci. 17,r10,-13"
+func_check "tabortdci. 29,r3,-5"
+func_check "tbegin. "
+func_check "tcheck cr7"
+func_check "tend. "
+func_check "tend. "
+func_check "tendall."
+func_check "tendall."
+func_check "treclaim. r24"
+func_check "trechkpt."
+func_check "tsuspend."
+func_check "tsuspend."
+func_check "tresume."
+func_check "tresume."
+func_check "ori r2,r2,0"
+func_check "nop"
+func_check "ori r2,r2,0"
+func_check "rfebb 0"
+func_check "rfebb "
+func_check "rfebb "
+func_check "bctar- 12,4*cr5+gt"
+func_check "bctarl- 4,4*cr1+so"
+func_check "bctar+ 12,4*cr3+lt"
+func_check "bctarl+ 4,eq"
+func_check "bctar 4,4*cr2+lt,1"
+func_check "bctarl 4,4*cr1+so,2"
+func_check "waitasec"
+func_check "msgsndp r8"
+func_check "mtsle 1"
+func_check "msgclrp r27"
+func_check "stqcx. r10,r10,r12"
+func_check "stqcx. r28,0,r7"
+func_check "lqarx r24,r19,r11"
+func_check "lqarx r22,0,r11"
+func_check "mfbhrbe r20,6"
+func_check "pbt. r29,r17,r16"
+func_check "pbt. r14,0,r7"
+func_check "clrbhrb"
+func_check "vpermxor v11,v10,v0,v23"
+func_check "vaddeuqm v24,v2,v7,v4"
+func_check "vaddecuq v10,v10,v8,v2"
+func_check "vsubeuqm v5,v15,v8,v19"
+func_check "vsubecuq v12,v31,v16,v29"
+func_check "vmulouw v20,v29,v13"
+func_check "vmuluwm v29,v0,v26"
+func_check "vaddudm v8,v21,v28"
+func_check "vmaxud v1,v26,v1"
+func_check "vrld v20,v3,v1"
+func_check "vcmpequd v4,v19,v11"
+func_check "vadduqm v23,v14,v30"
+func_check "vaddcuq v8,v8,v13"
+func_check "vmulosw v28,v27,v4"
+func_check "vmaxsd v3,v4,v4"
+func_check "vmuleuw v0,v19,v21"
+func_check "vminud v24,v20,v19"
+func_check "vcmpgtud v0,v28,v15"
+func_check "vmulesw v21,v0,v2"
+func_check "vminsd v9,v26,v9"
+func_check "vsrad v25,v29,v11"
+func_check "vcmpgtsd v11,v28,v11"
+func_check "bcdadd. v5,v8,v26,1"
+func_check "vpmsumb v4,v3,v12"
+func_check "bcdsub. v26,v31,v21,1"
+func_check "vpmsumh v5,v17,v16"
+func_check "vpkudum v23,v17,v20"
+func_check "vpmsumw v24,v21,v29"
+func_check "vpmsumd v9,v22,v13"
+func_check "vpkudus v18,v19,v18"
+func_check "vsubuqm v30,v16,v22"
+func_check "vcipher v14,v11,v7"
+func_check "vcipherlast v10,v2,v22"
+func_check "vgbbd v23,v13"
+func_check "vsubcuq v16,v25,v16"
+func_check "vorc v31,v1,v5"
+func_check "vncipher v4,v17,v31"
+func_check "vncipherlast v24,v2,v27"
+func_check "vbpermq v23,v21,v23"
+func_check "vpksdus v27,v18,v9"
+func_check "vnand v27,v29,v27"
+func_check "vsld v19,v19,v24"
+func_check "vsbox v5,v13"
+func_check "vpksdss v25,v3,v7"
+func_check "vcmpequd. v28,v8,v0"
+func_check "vupkhsw v26,v26"
+func_check "vshasigmaw v5,v7,0,6"
+func_check "veqv v28,v21,v14"
+func_check "vmrgow v1,v8,v19"
+func_check "vshasigmad v0,v10,0,10"
+func_check "vsrd v5,v27,v14"
+func_check "vupklsw v11,v13"
+func_check "vclzb v14,v16"
+func_check "vpopcntb v20,v27"
+func_check "vclzh v28,v11"
+func_check "vpopcnth v24,v9"
+func_check "vclzw v27,v31"
+func_check "vpopcntw v17,v19"
+func_check "vclzd v12,v29"
+func_check "vpopcntd v23,v22"
+func_check "vcmpgtud. v24,v20,v29"
+func_check "vcmpgtsd. v9,v6,v27"
+func_check "lxsiwzx vs62,r14,r26"
+func_check "lxsiwzx vs40,0,r25"
+func_check "lxsiwax vs25,0,r26"
+func_check "lxsiwax vs3,0,r3"
+func_check "mfvsrd r12,vs62"
+func_check "mffprwz r20,f12"
+func_check "stxsiwx vs14,r9,r14"
+func_check "stxsiwx vs21,0,r8"
+func_check "mtvsrd vs48,r11"
+func_check "mtvrwa v31,r23"
+func_check "mtfprwz f16,r26"
+func_check "lxsspx vs13,r19,r13"
+func_check "lxsspx vs18,0,r13"
+func_check "stxsspx vs43,r2,r4"
+func_check "stxsspx vs55,0,r11"
+func_check "xsaddsp vs54,vs48,vs25"
+func_check "xsmaddasp vs14,vs50,vs1"
+func_check "xssubsp vs26,vs22,vs42"
+func_check "xsmaddmsp vs27,vs53,vs52"
+func_check "xsrsqrtesp vs8,vs59"
+func_check "xssqrtsp vs12,vs41"
+func_check "xsmulsp vs57,vs11,vs32"
+func_check "xsmsubasp vs38,vs20,vs26"
+func_check "xsdivsp vs26,vs19,vs6"
+func_check "xsmsubmsp vs35,vs37,vs55"
+func_check "xsresp vs59,vs8"
+func_check "xsnmaddasp vs44,vs33,vs33"
+func_check "xsnmaddmsp vs17,vs62,vs30"
+func_check "xsnmsubasp vs54,vs52,vs31"
+func_check "xsnmsubmsp vs37,vs5,vs58"
+func_check "xxlorc vs30,vs54,vs44"
+func_check "xxlnand vs49,vs14,vs29"
+func_check "xxleqv vs62,vs22,vs30"
+func_check "xscvdpspn vs60,vs54"
+func_check "xsrsp vs22,vs45"
+func_check "xscvuxdsp vs26,vs59"
+func_check "xscvsxdsp vs38,vs49"
+func_check "xscvspdpn vs59,vs26"
+func_check "fmrgow f24,f14,f2"
+func_check "fmrgew f22,f7,f5"
+func_check "msgsnd r14"
+func_check "msgclr r23"
+func_check "lxvd2x vs40,0,r5"
+func_check "lxvd2x vs40,0,r5"
+func_check "lxvd2x vs10,r20,r6"
+func_check "lxvd2x vs10,r20,r6"
+func_check "stxvd2x vs41,0,r7"
+func_check "stxvd2x vs41,0,r7"
+func_check "stxvd2x vs11,r21,r8"
+func_check "stxvd2x vs11,r21,r8"
+func_check "lbarx r20,0,r7"
+func_check "lbarx r20,0,r7"
+func_check "lbarx r20,0,r7,1"
+func_check "lbarx r20,r1,r7"
+func_check "lbarx r20,r1,r7"
+func_check "lbarx r20,r1,r7,1"
+func_check "ldarx r21,0,r8"
+func_check "ldarx r21,0,r8"
+func_check "ldarx r21,0,r8,1"
+func_check "ldarx r21,r1,r8"
+func_check "ldarx r21,r1,r8"
+func_check "ldarx r21,r1,r8,1"
+func_check "lharx r22,0,r9"
+func_check "lharx r22,0,r9"
+func_check "lharx r22,0,r9,1"
+func_check "lharx r22,r1,r9"
+func_check "lharx r22,r1,r9"
+func_check "lharx r22,r1,r9,1"
+func_check "lwarx r23,0,r10"
+func_check "lwarx r23,0,r10"
+func_check "lwarx r23,0,r10,1"
+func_check "lwarx r23,r1,r10"
+func_check "lwarx r23,r1,r10"
+func_check "lwarx r23,r1,r10,1"
+func_check "stbcx. r10,0,r7"
+func_check "stbcx. r10,r1,r7"
+func_check "sthcx. r11,0,r8"
+func_check "sthcx. r11,r1,r8"
+func_check "stwcx. r12,0,r9"
+func_check "stwcx. r12,r1,r9"
+func_check "stdcx. r13,0,r10"
+func_check "stdcx. r13,r1,r10"
diff --git a/gdb/testsuite/gdb.arch/powerpc-power8.s b/gdb/testsuite/gdb.arch/powerpc-power8.s
new file mode 100644
index 0000000..3922b1b
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-power8.s
@@ -0,0 +1,205 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2014-2017 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+ .text
+ .globl func
+func:
+ .long 0x7c05071d /* tabort. r5 */
+ .long 0x7ce8861d /* tabortwc. 7,r8,r16 */
+ .long 0x7e8b565d /* tabortdc. 20,r11,r10 */
+ .long 0x7e2a9e9d /* tabortwci. 17,r10,-13 */
+ .long 0x7fa3dedd /* tabortdci. 29,r3,-5 */
+ .long 0x7c00051d /* tbegin. */
+ .long 0x7f80059c /* tcheck cr7 */
+ .long 0x7c00055d /* tend. */
+ .long 0x7c00055d /* tend. */
+ .long 0x7e00055d /* tendall. */
+ .long 0x7e00055d /* tendall. */
+ .long 0x7c18075d /* treclaim. r24 */
+ .long 0x7c0007dd /* trechkpt. */
+ .long 0x7c0005dd /* tsuspend. */
+ .long 0x7c0005dd /* tsuspend. */
+ .long 0x7c2005dd /* tresume. */
+ .long 0x7c2005dd /* tresume. */
+ .long 0x60420000 /* ori r2,r2,0 */
+ .long 0x60000000 /* nop */
+ .long 0x60420000 /* ori r2,r2,0 */
+ .long 0x4c000124 /* rfebb 0 */
+ .long 0x4c000924 /* rfebb */
+ .long 0x4c000924 /* rfebb */
+ .long 0x4d950460 /* bctar- 12,4*cr5+gt */
+ .long 0x4c870461 /* bctarl- 4,4*cr1+so */
+ .long 0x4dac0460 /* bctar+ 12,4*cr3+lt */
+ .long 0x4ca20461 /* bctarl+ 4,eq */
+ .long 0x4c880c60 /* bctar 4,4*cr2+lt,1 */
+ .long 0x4c871461 /* bctarl 4,4*cr1+so,2 */
+ .long 0x7c00003c /* waitasec */
+ .long 0x7c00411c /* msgsndp r8 */
+ .long 0x7c200126 /* mtsle 1 */
+ .long 0x7c00d95c /* msgclrp r27 */
+ .long 0x7d4a616d /* stqcx. r10,r10,r12 */
+ .long 0x7f80396d /* stqcx. r28,0,r7 */
+ .long 0x7f135a28 /* lqarx r24,r19,r11 */
+ .long 0x7ec05a28 /* lqarx r22,0,r11 */
+ .long 0x7e80325c /* mfbhrbe r20,6 */
+ .long 0x7fb18329 /* pbt. r29,r17,r16 */
+ .long 0x7dc03b29 /* pbt. r14,0,r7 */
+ .long 0x7c00035c /* clrbhrb */
+ .long 0x116a05ed /* vpermxor v11,v10,v0,v23 */
+ .long 0x1302393c /* vaddeuqm v24,v2,v7,v4 */
+ .long 0x114a40bd /* vaddecuq v10,v10,v8,v2 */
+ .long 0x10af44fe /* vsubeuqm v5,v15,v8,v19 */
+ .long 0x119f877f /* vsubecuq v12,v31,v16,v29 */
+ .long 0x129d6888 /* vmulouw v20,v29,v13 */
+ .long 0x13a0d089 /* vmuluwm v29,v0,v26 */
+ .long 0x1115e0c0 /* vaddudm v8,v21,v28 */
+ .long 0x103a08c2 /* vmaxud v1,v26,v1 */
+ .long 0x128308c4 /* vrld v20,v3,v1 */
+ .long 0x109358c7 /* vcmpequd v4,v19,v11 */
+ .long 0x12eef100 /* vadduqm v23,v14,v30 */
+ .long 0x11086940 /* vaddcuq v8,v8,v13 */
+ .long 0x139b2188 /* vmulosw v28,v27,v4 */
+ .long 0x106421c2 /* vmaxsd v3,v4,v4 */
+ .long 0x1013aa88 /* vmuleuw v0,v19,v21 */
+ .long 0x13149ac2 /* vminud v24,v20,v19 */
+ .long 0x101c7ac7 /* vcmpgtud v0,v28,v15 */
+ .long 0x12a01388 /* vmulesw v21,v0,v2 */
+ .long 0x113a4bc2 /* vminsd v9,v26,v9 */
+ .long 0x133d5bc4 /* vsrad v25,v29,v11 */
+ .long 0x117c5bc7 /* vcmpgtsd v11,v28,v11 */
+ .long 0x10a8d601 /* bcdadd. v5,v8,v26,1 */
+ .long 0x10836408 /* vpmsumb v4,v3,v12 */
+ .long 0x135fae41 /* bcdsub. v26,v31,v21,1 */
+ .long 0x10b18448 /* vpmsumh v5,v17,v16 */
+ .long 0x12f1a44e /* vpkudum v23,v17,v20 */
+ .long 0x1315ec88 /* vpmsumw v24,v21,v29 */
+ .long 0x11366cc8 /* vpmsumd v9,v22,v13 */
+ .long 0x125394ce /* vpkudus v18,v19,v18 */
+ .long 0x13d0b500 /* vsubuqm v30,v16,v22 */
+ .long 0x11cb3d08 /* vcipher v14,v11,v7 */
+ .long 0x1142b509 /* vcipherlast v10,v2,v22 */
+ .long 0x12e06d0c /* vgbbd v23,v13 */
+ .long 0x12198540 /* vsubcuq v16,v25,v16 */
+ .long 0x13e12d44 /* vorc v31,v1,v5 */
+ .long 0x1091fd48 /* vncipher v4,v17,v31 */
+ .long 0x1302dd49 /* vncipherlast v24,v2,v27 */
+ .long 0x12f5bd4c /* vbpermq v23,v21,v23 */
+ .long 0x13724d4e /* vpksdus v27,v18,v9 */
+ .long 0x137ddd84 /* vnand v27,v29,v27 */
+ .long 0x1273c5c4 /* vsld v19,v19,v24 */
+ .long 0x10ad05c8 /* vsbox v5,v13 */
+ .long 0x13233dce /* vpksdss v25,v3,v7 */
+ .long 0x138804c7 /* vcmpequd. v28,v8,v0 */
+ .long 0x1340d64e /* vupkhsw v26,v26 */
+ .long 0x10a73682 /* vshasigmaw v5,v7,0,6 */
+ .long 0x13957684 /* veqv v28,v21,v14 */
+ .long 0x10289e8c /* vmrgow v1,v8,v19 */
+ .long 0x100a56c2 /* vshasigmad v0,v10,0,10 */
+ .long 0x10bb76c4 /* vsrd v5,v27,v14 */
+ .long 0x11606ece /* vupklsw v11,v13 */
+ .long 0x11c08702 /* vclzb v14,v16 */
+ .long 0x1280df03 /* vpopcntb v20,v27 */
+ .long 0x13805f42 /* vclzh v28,v11 */
+ .long 0x13004f43 /* vpopcnth v24,v9 */
+ .long 0x1360ff82 /* vclzw v27,v31 */
+ .long 0x12209f83 /* vpopcntw v17,v19 */
+ .long 0x1180efc2 /* vclzd v12,v29 */
+ .long 0x12e0b7c3 /* vpopcntd v23,v22 */
+ .long 0x1314eec7 /* vcmpgtud. v24,v20,v29 */
+ .long 0x1126dfc7 /* vcmpgtsd. v9,v6,v27 */
+ .long 0x7fced019 /* lxsiwzx vs62,r14,r26 */
+ .long 0x7d00c819 /* lxsiwzx vs40,0,r25 */
+ .long 0x7f20d098 /* lxsiwax vs25,0,r26 */
+ .long 0x7c601898 /* lxsiwax vs3,0,r3 */
+ .long 0x7fcc0067 /* mfvsrd r12,vs62 */
+ .long 0x7d9400e6 /* mffprwz r20,f12 */
+ .long 0x7dc97118 /* stxsiwx vs14,r9,r14 */
+ .long 0x7ea04118 /* stxsiwx vs21,0,r8 */
+ .long 0x7e0b0167 /* mtvsrd vs48,r11 */
+ .long 0x7ff701a7 /* mtvrwa v31,r23 */
+ .long 0x7e1a01e6 /* mtfprwz f16,r26 */
+ .long 0x7db36c18 /* lxsspx vs13,r19,r13 */
+ .long 0x7e406c18 /* lxsspx vs18,0,r13 */
+ .long 0x7d622519 /* stxsspx vs43,r2,r4 */
+ .long 0x7ee05d19 /* stxsspx vs55,0,r11 */
+ .long 0xf2d0c805 /* xsaddsp vs54,vs48,vs25 */
+ .long 0xf1d2080c /* xsmaddasp vs14,vs50,vs1 */
+ .long 0xf3565042 /* xssubsp vs26,vs22,vs42 */
+ .long 0xf375a04e /* xsmaddmsp vs27,vs53,vs52 */
+ .long 0xf100d82a /* xsrsqrtesp vs8,vs59 */
+ .long 0xf180482e /* xssqrtsp vs12,vs41 */
+ .long 0xf32b0083 /* xsmulsp vs57,vs11,vs32 */
+ .long 0xf0d4d089 /* xsmsubasp vs38,vs20,vs26 */
+ .long 0xf35330c0 /* xsdivsp vs26,vs19,vs6 */
+ .long 0xf065b8cf /* xsmsubmsp vs35,vs37,vs55 */
+ .long 0xf3604069 /* xsresp vs59,vs8 */
+ .long 0xf1810c0f /* xsnmaddasp vs44,vs33,vs33 */
+ .long 0xf23ef44c /* xsnmaddmsp vs17,vs62,vs30 */
+ .long 0xf2d4fc8d /* xsnmsubasp vs54,vs52,vs31 */
+ .long 0xf0a5d4cb /* xsnmsubmsp vs37,vs5,vs58 */
+ .long 0xf3d66556 /* xxlorc vs30,vs54,vs44 */
+ .long 0xf22eed91 /* xxlnand vs49,vs14,vs29 */
+ .long 0xf3d6f5d1 /* xxleqv vs62,vs22,vs30 */
+ .long 0xf380b42f /* xscvdpspn vs60,vs54 */
+ .long 0xf2c06c66 /* xsrsp vs22,vs45 */
+ .long 0xf340dca2 /* xscvuxdsp vs26,vs59 */
+ .long 0xf0c08ce3 /* xscvsxdsp vs38,vs49 */
+ .long 0xf360d52d /* xscvspdpn vs59,vs26 */
+ .long 0xff0e168c /* fmrgow f24,f14,f2 */
+ .long 0xfec72f8c /* fmrgew f22,f7,f5 */
+ .long 0x7c00719c /* msgsnd r14 */
+ .long 0x7c00b9dc /* msgclr r23 */
+ .long 0x7d002e99 /* lxvd2x vs40,0,r5 */
+ .long 0x7d002e99 /* lxvd2x vs40,0,r5 */
+ .long 0x7d543698 /* lxvd2x vs10,r20,r6 */
+ .long 0x7d543698 /* lxvd2x vs10,r20,r6 */
+ .long 0x7d203f99 /* stxvd2x vs41,0,r7 */
+ .long 0x7d203f99 /* stxvd2x vs41,0,r7 */
+ .long 0x7d754798 /* stxvd2x vs11,r21,r8 */
+ .long 0x7d754798 /* stxvd2x vs11,r21,r8 */
+ .long 0x7e803868 /* lbarx r20,0,r7 */
+ .long 0x7e803868 /* lbarx r20,0,r7 */
+ .long 0x7e803869 /* lbarx r20,0,r7,1 */
+ .long 0x7e813868 /* lbarx r20,r1,r7 */
+ .long 0x7e813868 /* lbarx r20,r1,r7 */
+ .long 0x7e813869 /* lbarx r20,r1,r7,1 */
+ .long 0x7ea040a8 /* ldarx r21,0,r8 */
+ .long 0x7ea040a8 /* ldarx r21,0,r8 */
+ .long 0x7ea040a9 /* ldarx r21,0,r8,1 */
+ .long 0x7ea140a8 /* ldarx r21,r1,r8 */
+ .long 0x7ea140a8 /* ldarx r21,r1,r8 */
+ .long 0x7ea140a9 /* ldarx r21,r1,r8,1 */
+ .long 0x7ec048e8 /* lharx r22,0,r9 */
+ .long 0x7ec048e8 /* lharx r22,0,r9 */
+ .long 0x7ec048e9 /* lharx r22,0,r9,1 */
+ .long 0x7ec148e8 /* lharx r22,r1,r9 */
+ .long 0x7ec148e8 /* lharx r22,r1,r9 */
+ .long 0x7ec148e9 /* lharx r22,r1,r9,1 */
+ .long 0x7ee05028 /* lwarx r23,0,r10 */
+ .long 0x7ee05028 /* lwarx r23,0,r10 */
+ .long 0x7ee05029 /* lwarx r23,0,r10,1 */
+ .long 0x7ee15028 /* lwarx r23,r1,r10 */
+ .long 0x7ee15028 /* lwarx r23,r1,r10 */
+ .long 0x7ee15029 /* lwarx r23,r1,r10,1 */
+ .long 0x7d403d6d /* stbcx. r10,0,r7 */
+ .long 0x7d413d6d /* stbcx. r10,r1,r7 */
+ .long 0x7d6045ad /* sthcx. r11,0,r8 */
+ .long 0x7d6145ad /* sthcx. r11,r1,r8 */
+ .long 0x7d80492d /* stwcx. r12,0,r9 */
+ .long 0x7d81492d /* stwcx. r12,r1,r9 */
+ .long 0x7da051ad /* stdcx. r13,0,r10 */
+ .long 0x7da151ad /* stdcx. r13,r1,r10 */
diff --git a/gdb/testsuite/gdb.arch/powerpc-power9.exp b/gdb/testsuite/gdb.arch/powerpc-power9.exp
new file mode 100644
index 0000000..cb9be17
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-power9.exp
@@ -0,0 +1,445 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# Test PowerPC instructions disassembly.
+
+standard_testfile .s
+set objfile [standard_output_file ${testfile}.o]
+
+if {![istarget "powerpc*-*-*"]} then {
+ verbose "Skipping PowerPC instructions disassembly."
+ return
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC instructions disassembly"
+ return -1
+}
+
+clean_restart ${objfile}
+
+# Disassemble the function.
+set func ""
+
+gdb_test "set disassembler-options power9"
+set test "disass func"
+gdb_test_multiple $test $test {
+ -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
+ set func $expect_out(1,string)
+ pass $test
+ }
+}
+
+proc instr_to_patt {instr} {
+ global decimal hex
+ # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
+ return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]"
+}
+
+proc func_check {instr} {
+ global func
+
+ set test "found: $instr"
+ if [regexp -nocase -line [instr_to_patt $instr] $func] {
+ pass $test
+ } else {
+ fail $test
+ }
+}
+
+func_check "cnttzd r3,r13"
+func_check "cnttzd. r4,r14"
+func_check "cnttzw r5,r15"
+func_check "cnttzw. r6,r16"
+func_check "modsd r10,r20,r21"
+func_check "modsw r11,r21,r22"
+func_check "modud r12,r22,r23"
+func_check "moduw r13,r23,r24"
+func_check "bcdcfn. v3,v4,0"
+func_check "bcdcfn. v3,v4,1"
+func_check "bcdcfsq. v4,v5,0"
+func_check "bcdcfsq. v4,v5,1"
+func_check "bcdcfz. v5,v6,0"
+func_check "bcdcfz. v5,v6,1"
+func_check "bcdcpsgn. v6,v7,v8"
+func_check "bcdctn. v7,v8"
+func_check "bcdctsq. v8,v9"
+func_check "bcdctz. v9,v10,0"
+func_check "bcdctz. v9,v10,1"
+func_check "bcdsetsgn. v10,v11,0"
+func_check "bcdsetsgn. v10,v11,1"
+func_check "bcdsr. v11,v12,v13,0"
+func_check "bcdsr. v11,v12,v13,1"
+func_check "bcds. v12,v13,v14,0"
+func_check "bcds. v12,v13,v14,1"
+func_check "bcdtrunc. v13,v14,v15,0"
+func_check "bcdtrunc. v13,v14,v15,1"
+func_check "bcdus. v14,v15,v16"
+func_check "bcdutrunc. v15,v16,v17"
+func_check "lxvll vs20,0,r21"
+func_check "lxvll vs20,r10,r21"
+func_check "stxvll vs21,0,r11"
+func_check "stxvll vs21,r10,r11"
+func_check "vmul10cuq v22,v23"
+func_check "vmul10ecuq v23,v24,v25"
+func_check "vmul10euq v24,v25,v26"
+func_check "vmul10uq v25,v26"
+func_check "xsaddqp v10,v11,v12"
+func_check "xsaddqpo v11,v12,v12"
+func_check "xsrqpi 0,v20,v30,0"
+func_check "xsrqpi 1,v20,v30,0"
+func_check "xsrqpi 0,v20,v30,3"
+func_check "xsrqpi 1,v20,v30,3"
+func_check "xsrqpix 0,v21,v31,0"
+func_check "xsrqpix 1,v21,v31,0"
+func_check "xsrqpix 0,v21,v31,3"
+func_check "xsrqpix 1,v21,v31,3"
+func_check "xsmulqp v12,v13,v14"
+func_check "xsmulqpo v13,v14,v15"
+func_check "xsrqpxp 0,v22,v23,0"
+func_check "xsrqpxp 1,v22,v23,0"
+func_check "xsrqpxp 0,v22,v23,3"
+func_check "xsrqpxp 1,v22,v23,3"
+func_check "xscpsgnqp v14,v15,v16"
+func_check "xscmpoqp cr0,v15,v16"
+func_check "xscmpoqp cr7,v15,v16"
+func_check "xscmpexpqp cr0,v16,v17"
+func_check "xscmpexpqp cr7,v16,v17"
+func_check "xsmaddqp v17,v18,v19"
+func_check "xsmaddqpo v18,v19,v20"
+func_check "xsmsubqp v19,v20,v21"
+func_check "xsmsubqpo v20,v21,v22"
+func_check "xsnmaddqp v21,v22,v23"
+func_check "xsnmaddqpo v22,v23,v24"
+func_check "xsnmsubqp v23,v24,v25"
+func_check "xsnmsubqpo v24,v25,v26"
+func_check "xssubqp v25,v26,v27"
+func_check "xssubqpo v26,v27,v28"
+func_check "xsdivqp v27,v28,v29"
+func_check "xsdivqpo v28,v29,v30"
+func_check "xscmpuqp cr0,v29,v30"
+func_check "xscmpuqp cr7,v29,v30"
+func_check "xststdcqp cr0,v30,0"
+func_check "xststdcqp cr7,v30,0"
+func_check "xststdcqp cr0,v31,127"
+func_check "xststdcqp cr7,v31,127"
+func_check "xsabsqp v10,v11"
+func_check "xsxexpqp v11,v12"
+func_check "xsnabsqp v12,v13"
+func_check "xsnegqp v13,v14"
+func_check "xsxsigqp v14,v15"
+func_check "xssqrtqp v15,v16"
+func_check "xssqrtqpo v16,v17"
+func_check "xscvqpuwz v17,v18"
+func_check "xscvudqp v18,v19"
+func_check "xscvqpswz v19,v20"
+func_check "xscvsdqp v20,v21"
+func_check "xscvqpudz v21,v22"
+func_check "xscvqpdp v22,v23"
+func_check "xscvqpdpo v23,v24"
+func_check "xscvdpqp v24,v25"
+func_check "xscvqpsdz v25,v26"
+func_check "xsiexpqp v26,v27,v28"
+func_check "vpermr v4,v5,v6,v7"
+func_check "vextractub v5,v6,0"
+func_check "vextractub v5,v6,15"
+func_check "vextractuh v6,v7,0"
+func_check "vextractuh v6,v7,15"
+func_check "vextractuw v7,v8,0"
+func_check "vextractuw v7,v8,15"
+func_check "vextractd v8,v9,0"
+func_check "vextractd v8,v9,15"
+func_check "vinsertb v9,v10,0"
+func_check "vinsertb v9,v10,15"
+func_check "vinserth v10,v11,0"
+func_check "vinserth v10,v11,15"
+func_check "vinsertw v11,v12,0"
+func_check "vinsertw v11,v12,15"
+func_check "vinsertd v12,v13,0"
+func_check "vinsertd v12,v13,15"
+func_check "mfvsrld r20,vs45"
+func_check "mtvsrws vs46,r21"
+func_check "mtvsrdd vs47,0,r23"
+func_check "mtvsrdd vs47,r22,r23"
+func_check "lxvx vs50,0,r11"
+func_check "lxvx vs0,r10,r11"
+func_check "lxvwsx vs51,0,r12"
+func_check "lxvwsx vs1,r10,r12"
+func_check "lxvh8x vs52,0,r13"
+func_check "lxvh8x vs2,r10,r13"
+func_check "lxvb16x vs53,0,r14"
+func_check "lxvb16x vs3,r10,r14"
+func_check "stxvx vs54,0,r15"
+func_check "stxvx vs4,r20,r15"
+func_check "stxvh8x vs55,0,r16"
+func_check "stxvh8x vs5,r20,r16"
+func_check "stxvb16x vs56,0,r17"
+func_check "stxvb16x vs6,r20,r17"
+func_check "xxextractuw vs4,vs5,0"
+func_check "xxextractuw vs40,vs50,15"
+func_check "xxspltib vs4,0"
+func_check "xxspltib vs4,128"
+func_check "xxspltib vs41,255"
+func_check "xxspltib vs41,255"
+func_check "xxinsertw vs5,vs6,0"
+func_check "xxinsertw vs50,vs60,15"
+func_check "xxbrh vs6,vs7"
+func_check "xxbrh vs56,vs57"
+func_check "xxbrw vs7,vs8"
+func_check "xxbrw vs57,vs58"
+func_check "xxbrd vs8,vs9"
+func_check "xxbrd vs58,vs59"
+func_check "xxbrq vs9,vs10"
+func_check "xxbrq vs59,vs60"
+func_check "lxsd v20,0(0)"
+func_check "lxsd v20,0(r10)"
+func_check "lxsd v20,8(0)"
+func_check "lxsd v20,8(r10)"
+func_check "lxsd v20,-8(0)"
+func_check "lxsd v20,-8(r10)"
+func_check "lxsd v20,32764(0)"
+func_check "lxsd v20,32764(r10)"
+func_check "lxsd v20,-32768(0)"
+func_check "lxsd v20,-32768(r10)"
+func_check "lxssp v30,0(0)"
+func_check "lxssp v30,0(r11)"
+func_check "lxssp v30,8(0)"
+func_check "lxssp v30,8(r11)"
+func_check "lxssp v30,-8(0)"
+func_check "lxssp v30,-8(r11)"
+func_check "lxssp v30,32764(0)"
+func_check "lxssp v30,32764(r11)"
+func_check "lxssp v30,-32768(0)"
+func_check "lxssp v30,-32768(r11)"
+func_check "lxv vs40,0(0)"
+func_check "lxv vs40,0(r12)"
+func_check "lxv vs40,16(0)"
+func_check "lxv vs40,16(r12)"
+func_check "lxv vs40,-16(0)"
+func_check "lxv vs10,-16(r12)"
+func_check "lxv vs10,32752(0)"
+func_check "lxv vs10,32752(r12)"
+func_check "lxv vs10,-32768(0)"
+func_check "lxv vs10,-32768(r12)"
+func_check "stxsd v21,0(0)"
+func_check "stxsd v21,0(r10)"
+func_check "stxsd v21,8(0)"
+func_check "stxsd v21,8(r10)"
+func_check "stxsd v21,-8(0)"
+func_check "stxsd v21,-8(r10)"
+func_check "stxsd v21,32764(0)"
+func_check "stxsd v21,32764(r10)"
+func_check "stxsd v21,-32768(0)"
+func_check "stxsd v21,-32768(r10)"
+func_check "stxssp v31,0(0)"
+func_check "stxssp v31,0(r11)"
+func_check "stxssp v31,8(0)"
+func_check "stxssp v31,8(r11)"
+func_check "stxssp v31,-8(0)"
+func_check "stxssp v31,-8(r11)"
+func_check "stxssp v31,32764(0)"
+func_check "stxssp v31,32764(r11)"
+func_check "stxssp v31,-32768(0)"
+func_check "stxssp v31,-32768(r11)"
+func_check "stxv vs41,0(0)"
+func_check "stxv vs41,0(r12)"
+func_check "stxv vs41,16(0)"
+func_check "stxv vs41,16(r12)"
+func_check "stxv vs41,-16(0)"
+func_check "stxv vs11,-16(r12)"
+func_check "stxv vs11,32752(0)"
+func_check "stxv vs11,32752(r12)"
+func_check "stxv vs11,-32768(0)"
+func_check "stxv vs11,-32768(r12)"
+func_check "xxperm vs20,vs22,vs24"
+func_check "xxperm vs40,vs42,vs44"
+func_check "xxpermr vs21,vs23,vs25"
+func_check "xxpermr vs41,vs43,vs45"
+func_check "extswsli r12,r20,0"
+func_check "extswsli r12,r20,1"
+func_check "extswsli r12,r20,63"
+func_check "extswsli. r13,r21,0"
+func_check "extswsli. r13,r21,1"
+func_check "extswsli. r13,r21,63"
+func_check "vrlwmi v14,v22,v23"
+func_check "vrldmi v15,v23,v24"
+func_check "vrlwnm v16,v24,v25"
+func_check "vrldnm v17,v25,v26"
+func_check "vbpermd v18,v26,v27"
+func_check "vnegw v19,v20"
+func_check "vnegd v20,v21"
+func_check "vprtybw v21,v22"
+func_check "vprtybd v22,v23"
+func_check "vprtybq v23,v24"
+func_check "vextsb2w v24,v25"
+func_check "vextsh2w v25,v26"
+func_check "vextsb2d v26,v27"
+func_check "vextsh2d v27,v28"
+func_check "vextsw2d v28,v29"
+func_check "vctzb v29,v30"
+func_check "vctzh v30,v31"
+func_check "vctzw v31,v30"
+func_check "vctzd v30,v29"
+func_check "lxsibzx vs10,0,r20"
+func_check "lxsibzx vs50,r10,r20"
+func_check "lxsihzx vs11,0,r21"
+func_check "lxsihzx vs51,r11,r21"
+func_check "stxsibx vs12,0,r22"
+func_check "stxsibx vs52,r12,r22"
+func_check "stxsihx vs13,0,r23"
+func_check "stxsihx vs53,r13,r23"
+func_check "maddhd r10,r11,r12,r13"
+func_check "maddhdu r20,r21,r22,r23"
+func_check "maddld r2,r3,r4,r5"
+func_check "xscmpexpdp cr0,vs10,vs20"
+func_check "xscmpexpdp cr7,vs40,vs50"
+func_check "xsiexpdp vs41,r11,r21"
+func_check "xststdcdp cr0,vs11,127"
+func_check "xststdcdp cr7,vs41,127"
+func_check "xststdcsp cr0,vs11,127"
+func_check "xststdcsp cr7,vs41,127"
+func_check "xsxexpdp r13,vs43"
+func_check "xsxsigdp r14,vs44"
+func_check "xviexpdp vs45,vs46,vs47"
+func_check "xviexpsp vs46,vs47,vs48"
+func_check "xvtstdcdp vs54,vs55,0"
+func_check "xvtstdcdp vs54,vs55,127"
+func_check "xvtstdcsp vs55,vs56,0"
+func_check "xvtstdcsp vs55,vs56,127"
+func_check "xvxexpdp vs57,vs58"
+func_check "xvxexpsp vs58,vs59"
+func_check "xvxsigdp vs59,vs60"
+func_check "xvxsigsp vs60,vs61"
+func_check "cmpeqb cr0,r6,r7"
+func_check "cmpeqb cr7,r6,r7"
+func_check "cmprb cr0,0,r8,r9"
+func_check "cmprb cr7,0,r8,r9"
+func_check "cmprb cr0,1,r8,r9"
+func_check "cmprb cr7,1,r8,r9"
+func_check "setb r15,cr0"
+func_check "setb r15,cr7"
+func_check "lxvl vs26,0,r10"
+func_check "lxvl vs56,r20,r10"
+func_check "stxvl vs27,0,r11"
+func_check "stxvl vs57,r21,r11"
+func_check "vclzlsbb r20,v30"
+func_check "vctzlsbb r21,v31"
+func_check "vcmpneb v10,v11,v12"
+func_check "vcmpneb. v20,v21,v22"
+func_check "vcmpneh v11,v12,v13"
+func_check "vcmpneh. v21,v22,v23"
+func_check "vcmpnew v12,v13,v14"
+func_check "vcmpnew. v22,v23,v24"
+func_check "vcmpnezb v13,v14,v15"
+func_check "vcmpnezb. v23,v24,v25"
+func_check "vcmpnezh v14,v15,v16"
+func_check "vcmpnezh. v24,v25,v26"
+func_check "vcmpnezw v15,v16,v17"
+func_check "vcmpnezw. v25,v26,v27"
+func_check "vextublx r16,r17,v10"
+func_check "vextubrx r17,r18,v11"
+func_check "vextuhlx r18,r19,v12"
+func_check "vextuhrx r19,r20,v13"
+func_check "vextuwlx r20,r21,v14"
+func_check "vextuwrx r21,r22,v15"
+func_check "dtstsfi cr0,0,f3"
+func_check "dtstsfi cr7,63,f3"
+func_check "dtstsfiq cr0,0,f4"
+func_check "dtstsfiq cr7,63,f4"
+func_check "xscvhpdp vs40,vs50"
+func_check "xscvdphp vs41,vs51"
+func_check "xvcvhpsp vs42,vs52"
+func_check "xvcvsphp vs43,vs53"
+func_check "addpcis r3,0"
+func_check "addpcis r3,0"
+func_check "addpcis r4,1"
+func_check "addpcis r4,1"
+func_check "addpcis r5,-2"
+func_check "addpcis r5,-2"
+func_check "addpcis r6,32767"
+func_check "addpcis r6,32767"
+func_check "addpcis r7,-32768"
+func_check "addpcis r7,-32768"
+func_check "slbsync"
+func_check "slbiag r10"
+func_check "slbieg r10,r11"
+func_check "slbmfee r3,r4"
+func_check "slbmfee r3,r4"
+func_check "slbmfee r3,r4,1"
+func_check "slbmfev r4,r5"
+func_check "slbmfev r4,r5"
+func_check "slbmfev r4,r5,1"
+func_check "tlbie r3,r4"
+func_check "tlbie r3,r4"
+func_check "tlbie r3,r4,3,1,1"
+func_check "tlbiel r3"
+func_check "tlbiel r3"
+func_check "tlbiel r3,r4,3,1,1"
+func_check "copy r12,r13"
+func_check "paste. r10,r11"
+func_check "cpabort"
+func_check "hwsync"
+func_check "hwsync"
+func_check "hwsync"
+func_check "lwsync"
+func_check "lwsync"
+func_check "ptesync"
+func_check "ptesync"
+func_check "ldat r20,0,0"
+func_check "ldat r20,r10,28"
+func_check "lwat r21,0,0"
+func_check "lwat r21,r11,28"
+func_check "stdat r22,0,0"
+func_check "stdat r22,r12,28"
+func_check "stwat r23,0,0"
+func_check "stwat r23,r13,28"
+func_check "urfid"
+func_check "rmieg r30"
+func_check "ldmx r10,0,r15"
+func_check "ldmx r10,r3,r15"
+func_check "stop"
+func_check "wait "
+func_check "wait "
+func_check "darn r3,0"
+func_check "darn r3,1"
+func_check "darn r3,2"
+func_check "mcrxrx cr0"
+func_check "mcrxrx cr7"
+func_check "vslv v20,v21,v22"
+func_check "vsrv v23,v24,v25"
+func_check "msgsync"
+func_check "xscmpeqdp vs30,vs40,vs50"
+func_check "xscmpgtdp vs31,vs41,vs51"
+func_check "xscmpgedp vs32,vs42,vs52"
+func_check "xsmincdp vs34,vs44,vs54"
+func_check "xsmaxcdp vs35,vs45,vs55"
+func_check "xsminjdp vs36,vs46,vs56"
+func_check "xsmaxjdp vs37,vs47,vs57"
+func_check "vmsumudm v20,v21,v22,v23"
+func_check "addex r11,r12,r13,0"
+func_check "addex r11,r12,r13,1"
+func_check "addex r11,r12,r13,2"
+func_check "mffs f25"
+func_check "mffs. f25"
+func_check "mffsce f26"
+func_check "mffscdrn f27,f20"
+func_check "mffscdrni f28,0"
+func_check "mffscdrni f28,7"
+func_check "mffscrn f29,f21"
+func_check "mffscrni f30,0"
+func_check "mffscrni f30,3"
+func_check "mffsl f31"
diff --git a/gdb/testsuite/gdb.arch/powerpc-power9.s b/gdb/testsuite/gdb.arch/powerpc-power9.s
new file mode 100644
index 0000000..65d8783
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-power9.s
@@ -0,0 +1,402 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2014-2017 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+ .text
+ .globl func
+func:
+ .long 0x7da30474 /* cnttzd r3,r13 */
+ .long 0x7dc40475 /* cnttzd. r4,r14 */
+ .long 0x7de50434 /* cnttzw r5,r15 */
+ .long 0x7e060435 /* cnttzw. r6,r16 */
+ .long 0x7d54ae12 /* modsd r10,r20,r21 */
+ .long 0x7d75b616 /* modsw r11,r21,r22 */
+ .long 0x7d96ba12 /* modud r12,r22,r23 */
+ .long 0x7db7c216 /* moduw r13,r23,r24 */
+ .long 0x10672581 /* bcdcfn. v3,v4,0 */
+ .long 0x10672781 /* bcdcfn. v3,v4,1 */
+ .long 0x10822d81 /* bcdcfsq. v4,v5,0 */
+ .long 0x10822f81 /* bcdcfsq. v4,v5,1 */
+ .long 0x10a63581 /* bcdcfz. v5,v6,0 */
+ .long 0x10a63781 /* bcdcfz. v5,v6,1 */
+ .long 0x10c74341 /* bcdcpsgn. v6,v7,v8 */
+ .long 0x10e54581 /* bcdctn. v7,v8 */
+ .long 0x11004d81 /* bcdctsq. v8,v9 */
+ .long 0x11245581 /* bcdctz. v9,v10,0 */
+ .long 0x11245781 /* bcdctz. v9,v10,1 */
+ .long 0x115f5d81 /* bcdsetsgn. v10,v11,0 */
+ .long 0x115f5f81 /* bcdsetsgn. v10,v11,1 */
+ .long 0x116c6dc1 /* bcdsr. v11,v12,v13,0 */
+ .long 0x116c6fc1 /* bcdsr. v11,v12,v13,1 */
+ .long 0x118d74c1 /* bcds. v12,v13,v14,0 */
+ .long 0x118d76c1 /* bcds. v12,v13,v14,1 */
+ .long 0x11ae7d01 /* bcdtrunc. v13,v14,v15,0 */
+ .long 0x11ae7f01 /* bcdtrunc. v13,v14,v15,1 */
+ .long 0x11cf8481 /* bcdus. v14,v15,v16 */
+ .long 0x11f08d41 /* bcdutrunc. v15,v16,v17 */
+ .long 0x7e80aa5a /* lxvll vs20,0,r21 */
+ .long 0x7e8aaa5a /* lxvll vs20,r10,r21 */
+ .long 0x7ea05b5a /* stxvll vs21,0,r11 */
+ .long 0x7eaa5b5a /* stxvll vs21,r10,r11 */
+ .long 0x12d70001 /* vmul10cuq v22,v23 */
+ .long 0x12f8c841 /* vmul10ecuq v23,v24,v25 */
+ .long 0x1319d241 /* vmul10euq v24,v25,v26 */
+ .long 0x133a0201 /* vmul10uq v25,v26 */
+ .long 0xfd4b6008 /* xsaddqp v10,v11,v12 */
+ .long 0xfd6c6009 /* xsaddqpo v11,v12,v12 */
+ .long 0xfe80f00a /* xsrqpi 0,v20,v30,0 */
+ .long 0xfe81f00a /* xsrqpi 1,v20,v30,0 */
+ .long 0xfe80f60a /* xsrqpi 0,v20,v30,3 */
+ .long 0xfe81f60a /* xsrqpi 1,v20,v30,3 */
+ .long 0xfea0f80b /* xsrqpix 0,v21,v31,0 */
+ .long 0xfea1f80b /* xsrqpix 1,v21,v31,0 */
+ .long 0xfea0fe0b /* xsrqpix 0,v21,v31,3 */
+ .long 0xfea1fe0b /* xsrqpix 1,v21,v31,3 */
+ .long 0xfd8d7048 /* xsmulqp v12,v13,v14 */
+ .long 0xfdae7849 /* xsmulqpo v13,v14,v15 */
+ .long 0xfec0b84a /* xsrqpxp 0,v22,v23,0 */
+ .long 0xfec1b84a /* xsrqpxp 1,v22,v23,0 */
+ .long 0xfec0be4a /* xsrqpxp 0,v22,v23,3 */
+ .long 0xfec1be4a /* xsrqpxp 1,v22,v23,3 */
+ .long 0xfdcf80c8 /* xscpsgnqp v14,v15,v16 */
+ .long 0xfc0f8108 /* xscmpoqp cr0,v15,v16 */
+ .long 0xff8f8108 /* xscmpoqp cr7,v15,v16 */
+ .long 0xfc108948 /* xscmpexpqp cr0,v16,v17 */
+ .long 0xff908948 /* xscmpexpqp cr7,v16,v17 */
+ .long 0xfe329b08 /* xsmaddqp v17,v18,v19 */
+ .long 0xfe53a309 /* xsmaddqpo v18,v19,v20 */
+ .long 0xfe74ab48 /* xsmsubqp v19,v20,v21 */
+ .long 0xfe95b349 /* xsmsubqpo v20,v21,v22 */
+ .long 0xfeb6bb88 /* xsnmaddqp v21,v22,v23 */
+ .long 0xfed7c389 /* xsnmaddqpo v22,v23,v24 */
+ .long 0xfef8cbc8 /* xsnmsubqp v23,v24,v25 */
+ .long 0xff19d3c9 /* xsnmsubqpo v24,v25,v26 */
+ .long 0xff3adc08 /* xssubqp v25,v26,v27 */
+ .long 0xff5be409 /* xssubqpo v26,v27,v28 */
+ .long 0xff7cec48 /* xsdivqp v27,v28,v29 */
+ .long 0xff9df449 /* xsdivqpo v28,v29,v30 */
+ .long 0xfc1df508 /* xscmpuqp cr0,v29,v30 */
+ .long 0xff9df508 /* xscmpuqp cr7,v29,v30 */
+ .long 0xfc00f588 /* xststdcqp cr0,v30,0 */
+ .long 0xff80f588 /* xststdcqp cr7,v30,0 */
+ .long 0xfc7ffd88 /* xststdcqp cr0,v31,127 */
+ .long 0xfffffd88 /* xststdcqp cr7,v31,127 */
+ .long 0xfd405e48 /* xsabsqp v10,v11 */
+ .long 0xfd626648 /* xsxexpqp v11,v12 */
+ .long 0xfd886e48 /* xsnabsqp v12,v13 */
+ .long 0xfdb07648 /* xsnegqp v13,v14 */
+ .long 0xfdd27e48 /* xsxsigqp v14,v15 */
+ .long 0xfdfb8648 /* xssqrtqp v15,v16 */
+ .long 0xfe1b8e49 /* xssqrtqpo v16,v17 */
+ .long 0xfe219688 /* xscvqpuwz v17,v18 */
+ .long 0xfe429e88 /* xscvudqp v18,v19 */
+ .long 0xfe69a688 /* xscvqpswz v19,v20 */
+ .long 0xfe8aae88 /* xscvsdqp v20,v21 */
+ .long 0xfeb1b688 /* xscvqpudz v21,v22 */
+ .long 0xfed4be88 /* xscvqpdp v22,v23 */
+ .long 0xfef4c689 /* xscvqpdpo v23,v24 */
+ .long 0xff16ce88 /* xscvdpqp v24,v25 */
+ .long 0xff39d688 /* xscvqpsdz v25,v26 */
+ .long 0xff5be6c8 /* xsiexpqp v26,v27,v28 */
+ .long 0x108531fb /* vpermr v4,v5,v6,v7 */
+ .long 0x10a0320d /* vextractub v5,v6,0 */
+ .long 0x10af320d /* vextractub v5,v6,15 */
+ .long 0x10c03a4d /* vextractuh v6,v7,0 */
+ .long 0x10cf3a4d /* vextractuh v6,v7,15 */
+ .long 0x10e0428d /* vextractuw v7,v8,0 */
+ .long 0x10ef428d /* vextractuw v7,v8,15 */
+ .long 0x11004acd /* vextractd v8,v9,0 */
+ .long 0x110f4acd /* vextractd v8,v9,15 */
+ .long 0x1120530d /* vinsertb v9,v10,0 */
+ .long 0x112f530d /* vinsertb v9,v10,15 */
+ .long 0x11405b4d /* vinserth v10,v11,0 */
+ .long 0x114f5b4d /* vinserth v10,v11,15 */
+ .long 0x1160638d /* vinsertw v11,v12,0 */
+ .long 0x116f638d /* vinsertw v11,v12,15 */
+ .long 0x11806bcd /* vinsertd v12,v13,0 */
+ .long 0x118f6bcd /* vinsertd v12,v13,15 */
+ .long 0x7db40267 /* mfvsrld r20,vs45 */
+ .long 0x7dd50327 /* mtvsrws vs46,r21 */
+ .long 0x7de0bb67 /* mtvsrdd vs47,0,r23 */
+ .long 0x7df6bb67 /* mtvsrdd vs47,r22,r23 */
+ .long 0x7e405a19 /* lxvx vs50,0,r11 */
+ .long 0x7c0a5a18 /* lxvx vs0,r10,r11 */
+ .long 0x7e6062d9 /* lxvwsx vs51,0,r12 */
+ .long 0x7c2a62d8 /* lxvwsx vs1,r10,r12 */
+ .long 0x7e806e59 /* lxvh8x vs52,0,r13 */
+ .long 0x7c4a6e58 /* lxvh8x vs2,r10,r13 */
+ .long 0x7ea076d9 /* lxvb16x vs53,0,r14 */
+ .long 0x7c6a76d8 /* lxvb16x vs3,r10,r14 */
+ .long 0x7ec07b19 /* stxvx vs54,0,r15 */
+ .long 0x7c947b18 /* stxvx vs4,r20,r15 */
+ .long 0x7ee08759 /* stxvh8x vs55,0,r16 */
+ .long 0x7cb48758 /* stxvh8x vs5,r20,r16 */
+ .long 0x7f008fd9 /* stxvb16x vs56,0,r17 */
+ .long 0x7cd48fd8 /* stxvb16x vs6,r20,r17 */
+ .long 0xf0802a94 /* xxextractuw vs4,vs5,0 */
+ .long 0xf10f9297 /* xxextractuw vs40,vs50,15 */
+ .long 0xf08002d0 /* xxspltib vs4,0 */
+ .long 0xf08402d0 /* xxspltib vs4,128 */
+ .long 0xf127fad1 /* xxspltib vs41,255 */
+ .long 0xf127fad1 /* xxspltib vs41,255 */
+ .long 0xf0a032d4 /* xxinsertw vs5,vs6,0 */
+ .long 0xf24fe2d7 /* xxinsertw vs50,vs60,15 */
+ .long 0xf0c73f6c /* xxbrh vs6,vs7 */
+ .long 0xf307cf6f /* xxbrh vs56,vs57 */
+ .long 0xf0ef476c /* xxbrw vs7,vs8 */
+ .long 0xf32fd76f /* xxbrw vs57,vs58 */
+ .long 0xf1174f6c /* xxbrd vs8,vs9 */
+ .long 0xf357df6f /* xxbrd vs58,vs59 */
+ .long 0xf13f576c /* xxbrq vs9,vs10 */
+ .long 0xf37fe76f /* xxbrq vs59,vs60 */
+ .long 0xe6800002 /* lxsd v20,0(0) */
+ .long 0xe68a0002 /* lxsd v20,0(r10) */
+ .long 0xe680000a /* lxsd v20,8(0) */
+ .long 0xe68a000a /* lxsd v20,8(r10) */
+ .long 0xe680fffa /* lxsd v20,-8(0) */
+ .long 0xe68afffa /* lxsd v20,-8(r10) */
+ .long 0xe6807ffe /* lxsd v20,32764(0) */
+ .long 0xe68a7ffe /* lxsd v20,32764(r10) */
+ .long 0xe6808002 /* lxsd v20,-32768(0) */
+ .long 0xe68a8002 /* lxsd v20,-32768(r10) */
+ .long 0xe7c00003 /* lxssp v30,0(0) */
+ .long 0xe7cb0003 /* lxssp v30,0(r11) */
+ .long 0xe7c0000b /* lxssp v30,8(0) */
+ .long 0xe7cb000b /* lxssp v30,8(r11) */
+ .long 0xe7c0fffb /* lxssp v30,-8(0) */
+ .long 0xe7cbfffb /* lxssp v30,-8(r11) */
+ .long 0xe7c07fff /* lxssp v30,32764(0) */
+ .long 0xe7cb7fff /* lxssp v30,32764(r11) */
+ .long 0xe7c08003 /* lxssp v30,-32768(0) */
+ .long 0xe7cb8003 /* lxssp v30,-32768(r11) */
+ .long 0xf5000009 /* lxv vs40,0(0) */
+ .long 0xf50c0009 /* lxv vs40,0(r12) */
+ .long 0xf5000019 /* lxv vs40,16(0) */
+ .long 0xf50c0019 /* lxv vs40,16(r12) */
+ .long 0xf500fff9 /* lxv vs40,-16(0) */
+ .long 0xf54cfff1 /* lxv vs10,-16(r12) */
+ .long 0xf5407ff1 /* lxv vs10,32752(0) */
+ .long 0xf54c7ff1 /* lxv vs10,32752(r12) */
+ .long 0xf5408001 /* lxv vs10,-32768(0) */
+ .long 0xf54c8001 /* lxv vs10,-32768(r12) */
+ .long 0xf6a00002 /* stxsd v21,0(0) */
+ .long 0xf6aa0002 /* stxsd v21,0(r10) */
+ .long 0xf6a0000a /* stxsd v21,8(0) */
+ .long 0xf6aa000a /* stxsd v21,8(r10) */
+ .long 0xf6a0fffa /* stxsd v21,-8(0) */
+ .long 0xf6aafffa /* stxsd v21,-8(r10) */
+ .long 0xf6a07ffe /* stxsd v21,32764(0) */
+ .long 0xf6aa7ffe /* stxsd v21,32764(r10) */
+ .long 0xf6a08002 /* stxsd v21,-32768(0) */
+ .long 0xf6aa8002 /* stxsd v21,-32768(r10) */
+ .long 0xf7e00003 /* stxssp v31,0(0) */
+ .long 0xf7eb0003 /* stxssp v31,0(r11) */
+ .long 0xf7e0000b /* stxssp v31,8(0) */
+ .long 0xf7eb000b /* stxssp v31,8(r11) */
+ .long 0xf7e0fffb /* stxssp v31,-8(0) */
+ .long 0xf7ebfffb /* stxssp v31,-8(r11) */
+ .long 0xf7e07fff /* stxssp v31,32764(0) */
+ .long 0xf7eb7fff /* stxssp v31,32764(r11) */
+ .long 0xf7e08003 /* stxssp v31,-32768(0) */
+ .long 0xf7eb8003 /* stxssp v31,-32768(r11) */
+ .long 0xf520000d /* stxv vs41,0(0) */
+ .long 0xf52c000d /* stxv vs41,0(r12) */
+ .long 0xf520001d /* stxv vs41,16(0) */
+ .long 0xf52c001d /* stxv vs41,16(r12) */
+ .long 0xf520fffd /* stxv vs41,-16(0) */
+ .long 0xf56cfff5 /* stxv vs11,-16(r12) */
+ .long 0xf5607ff5 /* stxv vs11,32752(0) */
+ .long 0xf56c7ff5 /* stxv vs11,32752(r12) */
+ .long 0xf5608005 /* stxv vs11,-32768(0) */
+ .long 0xf56c8005 /* stxv vs11,-32768(r12) */
+ .long 0xf296c0d0 /* xxperm vs20,vs22,vs24 */
+ .long 0xf10a60d7 /* xxperm vs40,vs42,vs44 */
+ .long 0xf2b7c9d0 /* xxpermr vs21,vs23,vs25 */
+ .long 0xf12b69d7 /* xxpermr vs41,vs43,vs45 */
+ .long 0x7e8c06f4 /* extswsli r12,r20,0 */
+ .long 0x7e8c0ef4 /* extswsli r12,r20,1 */
+ .long 0x7e8cfef6 /* extswsli r12,r20,63 */
+ .long 0x7ead06f5 /* extswsli. r13,r21,0 */
+ .long 0x7ead0ef5 /* extswsli. r13,r21,1 */
+ .long 0x7eadfef7 /* extswsli. r13,r21,63 */
+ .long 0x11d6b885 /* vrlwmi v14,v22,v23 */
+ .long 0x11f7c0c5 /* vrldmi v15,v23,v24 */
+ .long 0x1218c985 /* vrlwnm v16,v24,v25 */
+ .long 0x1239d1c5 /* vrldnm v17,v25,v26 */
+ .long 0x125addcc /* vbpermd v18,v26,v27 */
+ .long 0x1266a602 /* vnegw v19,v20 */
+ .long 0x1287ae02 /* vnegd v20,v21 */
+ .long 0x12a8b602 /* vprtybw v21,v22 */
+ .long 0x12c9be02 /* vprtybd v22,v23 */
+ .long 0x12eac602 /* vprtybq v23,v24 */
+ .long 0x1310ce02 /* vextsb2w v24,v25 */
+ .long 0x1331d602 /* vextsh2w v25,v26 */
+ .long 0x1358de02 /* vextsb2d v26,v27 */
+ .long 0x1379e602 /* vextsh2d v27,v28 */
+ .long 0x139aee02 /* vextsw2d v28,v29 */
+ .long 0x13bcf602 /* vctzb v29,v30 */
+ .long 0x13ddfe02 /* vctzh v30,v31 */
+ .long 0x13fef602 /* vctzw v31,v30 */
+ .long 0x13dfee02 /* vctzd v30,v29 */
+ .long 0x7d40a61a /* lxsibzx vs10,0,r20 */
+ .long 0x7e4aa61b /* lxsibzx vs50,r10,r20 */
+ .long 0x7d60ae5a /* lxsihzx vs11,0,r21 */
+ .long 0x7e6bae5b /* lxsihzx vs51,r11,r21 */
+ .long 0x7d80b71a /* stxsibx vs12,0,r22 */
+ .long 0x7e8cb71b /* stxsibx vs52,r12,r22 */
+ .long 0x7da0bf5a /* stxsihx vs13,0,r23 */
+ .long 0x7eadbf5b /* stxsihx vs53,r13,r23 */
+ .long 0x114b6370 /* maddhd r10,r11,r12,r13 */
+ .long 0x1295b5f1 /* maddhdu r20,r21,r22,r23 */
+ .long 0x10432173 /* maddld r2,r3,r4,r5 */
+ .long 0xf00aa1d8 /* xscmpexpdp cr0,vs10,vs20 */
+ .long 0xf38891de /* xscmpexpdp cr7,vs40,vs50 */
+ .long 0xf12baf2d /* xsiexpdp vs41,r11,r21 */
+ .long 0xf07f5da8 /* xststdcdp cr0,vs11,127 */
+ .long 0xf3ff4daa /* xststdcdp cr7,vs41,127 */
+ .long 0xf07f5ca8 /* xststdcsp cr0,vs11,127 */
+ .long 0xf3ff4caa /* xststdcsp cr7,vs41,127 */
+ .long 0xf1a05d6e /* xsxexpdp r13,vs43 */
+ .long 0xf1c1656e /* xsxsigdp r14,vs44 */
+ .long 0xf1ae7fc7 /* xviexpdp vs45,vs46,vs47 */
+ .long 0xf1cf86c7 /* xviexpsp vs46,vs47,vs48 */
+ .long 0xf2c0bfab /* xvtstdcdp vs54,vs55,0 */
+ .long 0xf2dfbfef /* xvtstdcdp vs54,vs55,127 */
+ .long 0xf2e0c6ab /* xvtstdcsp vs55,vs56,0 */
+ .long 0xf2ffc6ef /* xvtstdcsp vs55,vs56,127 */
+ .long 0xf320d76f /* xvxexpdp vs57,vs58 */
+ .long 0xf348df6f /* xvxexpsp vs58,vs59 */
+ .long 0xf361e76f /* xvxsigdp vs59,vs60 */
+ .long 0xf389ef6f /* xvxsigsp vs60,vs61 */
+ .long 0x7c0639c0 /* cmpeqb cr0,r6,r7 */
+ .long 0x7f8639c0 /* cmpeqb cr7,r6,r7 */
+ .long 0x7c084980 /* cmprb cr0,0,r8,r9 */
+ .long 0x7f884980 /* cmprb cr7,0,r8,r9 */
+ .long 0x7c284980 /* cmprb cr0,1,r8,r9 */
+ .long 0x7fa84980 /* cmprb cr7,1,r8,r9 */
+ .long 0x7de00100 /* setb r15,cr0 */
+ .long 0x7dfc0100 /* setb r15,cr7 */
+ .long 0x7f40521a /* lxvl vs26,0,r10 */
+ .long 0x7f14521b /* lxvl vs56,r20,r10 */
+ .long 0x7f605b1a /* stxvl vs27,0,r11 */
+ .long 0x7f355b1b /* stxvl vs57,r21,r11 */
+ .long 0x1280f602 /* vclzlsbb r20,v30 */
+ .long 0x12a1fe02 /* vctzlsbb r21,v31 */
+ .long 0x114b6007 /* vcmpneb v10,v11,v12 */
+ .long 0x1295b407 /* vcmpneb. v20,v21,v22 */
+ .long 0x116c6847 /* vcmpneh v11,v12,v13 */
+ .long 0x12b6bc47 /* vcmpneh. v21,v22,v23 */
+ .long 0x118d7087 /* vcmpnew v12,v13,v14 */
+ .long 0x12d7c487 /* vcmpnew. v22,v23,v24 */
+ .long 0x11ae7907 /* vcmpnezb v13,v14,v15 */
+ .long 0x12f8cd07 /* vcmpnezb. v23,v24,v25 */
+ .long 0x11cf8147 /* vcmpnezh v14,v15,v16 */
+ .long 0x1319d547 /* vcmpnezh. v24,v25,v26 */
+ .long 0x11f08987 /* vcmpnezw v15,v16,v17 */
+ .long 0x133add87 /* vcmpnezw. v25,v26,v27 */
+ .long 0x1211560d /* vextublx r16,r17,v10 */
+ .long 0x12325f0d /* vextubrx r17,r18,v11 */
+ .long 0x1253664d /* vextuhlx r18,r19,v12 */
+ .long 0x12746f4d /* vextuhrx r19,r20,v13 */
+ .long 0x1295768d /* vextuwlx r20,r21,v14 */
+ .long 0x12b67f8d /* vextuwrx r21,r22,v15 */
+ .long 0xec001d46 /* dtstsfi cr0,0,f3 */
+ .long 0xefbf1d46 /* dtstsfi cr7,63,f3 */
+ .long 0xfc002546 /* dtstsfiq cr0,0,f4 */
+ .long 0xffbf2546 /* dtstsfiq cr7,63,f4 */
+ .long 0xf110956f /* xscvhpdp vs40,vs50 */
+ .long 0xf1319d6f /* xscvdphp vs41,vs51 */
+ .long 0xf158a76f /* xvcvhpsp vs42,vs52 */
+ .long 0xf179af6f /* xvcvsphp vs43,vs53 */
+ .long 0x4c600004 /* addpcis r3,0 */
+ .long 0x4c600004 /* addpcis r3,0 */
+ .long 0x4c800005 /* addpcis r4,1 */
+ .long 0x4c800005 /* addpcis r4,1 */
+ .long 0x4cbfffc4 /* addpcis r5,-2 */
+ .long 0x4cbfffc4 /* addpcis r5,-2 */
+ .long 0x4cdf7fc5 /* addpcis r6,32767 */
+ .long 0x4cdf7fc5 /* addpcis r6,32767 */
+ .long 0x4ce08004 /* addpcis r7,-32768 */
+ .long 0x4ce08004 /* addpcis r7,-32768 */
+ .long 0x7c0002a4 /* slbsync */
+ .long 0x7d4006a4 /* slbiag r10 */
+ .long 0x7d405ba4 /* slbieg r10,r11 */
+ .long 0x7c602726 /* slbmfee r3,r4 */
+ .long 0x7c602726 /* slbmfee r3,r4 */
+ .long 0x7c612726 /* slbmfee r3,r4,1 */
+ .long 0x7c802ea6 /* slbmfev r4,r5 */
+ .long 0x7c802ea6 /* slbmfev r4,r5 */
+ .long 0x7c812ea6 /* slbmfev r4,r5,1 */
+ .long 0x7c801a64 /* tlbie r3,r4 */
+ .long 0x7c801a64 /* tlbie r3,r4 */
+ .long 0x7c8f1a64 /* tlbie r3,r4,3,1,1 */
+ .long 0x7c001a24 /* tlbiel r3 */
+ .long 0x7c001a24 /* tlbiel r3 */
+ .long 0x7c8f1a24 /* tlbiel r3,r4,3,1,1 */
+ .long 0x7c2c6e0c /* copy r12,r13 */
+ .long 0x7c2a5f0d /* paste. r10,r11 */
+ .long 0x7c00068c /* cpabort */
+ .long 0x7c0004ac /* hwsync */
+ .long 0x7c0004ac /* hwsync */
+ .long 0x7c0004ac /* hwsync */
+ .long 0x7c2004ac /* lwsync */
+ .long 0x7c2004ac /* lwsync */
+ .long 0x7c4004ac /* ptesync */
+ .long 0x7c4004ac /* ptesync */
+ .long 0x7e8004cc /* ldat r20,0,0 */
+ .long 0x7e8ae4cc /* ldat r20,r10,28 */
+ .long 0x7ea0048c /* lwat r21,0,0 */
+ .long 0x7eabe48c /* lwat r21,r11,28 */
+ .long 0x7ec005cc /* stdat r22,0,0 */
+ .long 0x7ecce5cc /* stdat r22,r12,28 */
+ .long 0x7ee0058c /* stwat r23,0,0 */
+ .long 0x7eede58c /* stwat r23,r13,28 */
+ .long 0x4c000264 /* urfid */
+ .long 0x7c00f6e4 /* rmieg r30 */
+ .long 0x7d407a6a /* ldmx r10,0,r15 */
+ .long 0x7d437a6a /* ldmx r10,r3,r15 */
+ .long 0x4c0002e4 /* stop */
+ .long 0x7c00003c /* wait */
+ .long 0x7c00003c /* wait */
+ .long 0x7c6005e6 /* darn r3,0 */
+ .long 0x7c6105e6 /* darn r3,1 */
+ .long 0x7c6205e6 /* darn r3,2 */
+ .long 0x7c000480 /* mcrxrx cr0 */
+ .long 0x7f800480 /* mcrxrx cr7 */
+ .long 0x1295b744 /* vslv v20,v21,v22 */
+ .long 0x12f8cf04 /* vsrv v23,v24,v25 */
+ .long 0x7c0006ec /* msgsync */
+ .long 0xf3c8901e /* xscmpeqdp vs30,vs40,vs50 */
+ .long 0xf3e9985e /* xscmpgtdp vs31,vs41,vs51 */
+ .long 0xf00aa09f /* xscmpgedp vs32,vs42,vs52 */
+ .long 0xf04cb447 /* xsmincdp vs34,vs44,vs54 */
+ .long 0xf06dbc07 /* xsmaxcdp vs35,vs45,vs55 */
+ .long 0xf08ec4c7 /* xsminjdp vs36,vs46,vs56 */
+ .long 0xf0afcc87 /* xsmaxjdp vs37,vs47,vs57 */
+ .long 0x1295b5e3 /* vmsumudm v20,v21,v22,v23 */
+ .long 0x7d6c6954 /* addex r11,r12,r13,0 */
+ .long 0x7d6c6b54 /* addex r11,r12,r13,1 */
+ .long 0x7d6c6d54 /* addex r11,r12,r13,2 */
+ .long 0xff20048e /* mffs f25 */
+ .long 0xff20048f /* mffs. f25 */
+ .long 0xff41048e /* mffsce f26 */
+ .long 0xff74a48e /* mffscdrn f27,f20 */
+ .long 0xff95048e /* mffscdrni f28,0 */
+ .long 0xff953c8e /* mffscdrni f28,7 */
+ .long 0xffb6ac8e /* mffscrn f29,f21 */
+ .long 0xffd7048e /* mffscrni f30,0 */
+ .long 0xffd71c8e /* mffscrni f30,3 */
+ .long 0xfff8048e /* mffsl f31 */
diff --git a/gdb/testsuite/gdb.arch/powerpc-vsx.exp b/gdb/testsuite/gdb.arch/powerpc-vsx.exp
new file mode 100644
index 0000000..60fe9d4
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-vsx.exp
@@ -0,0 +1,225 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# Test PowerPC instructions disassembly.
+
+standard_testfile .s
+set objfile [standard_output_file ${testfile}.o]
+
+if {![istarget "powerpc*-*-*"]} then {
+ verbose "Skipping PowerPC instructions disassembly."
+ return
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC instructions disassembly"
+ return -1
+}
+
+clean_restart ${objfile}
+
+# Disassemble the function.
+set func ""
+
+gdb_test "set disassembler-options vsx"
+set test "disass func"
+gdb_test_multiple $test $test {
+ -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
+ set func $expect_out(1,string)
+ pass $test
+ }
+}
+
+proc instr_to_patt {instr} {
+ global decimal hex
+ # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
+ return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]"
+}
+
+proc func_check {instr} {
+ global func
+
+ set test "found: $instr"
+ if [regexp -nocase -line [instr_to_patt $instr] $func] {
+ pass $test
+ } else {
+ fail $test
+ }
+}
+
+func_check "lxsdx vs40,r10,r20"
+func_check "lxvd2x vs40,r10,r20"
+func_check "lxvdsx vs40,r10,r20"
+func_check "lxvw4x vs40,r10,r20"
+func_check "stxsdx vs40,r10,r20"
+func_check "stxvd2x vs40,r10,r20"
+func_check "stxvw4x vs40,r10,r20"
+func_check "xsabsdp vs40,vs60"
+func_check "xsadddp vs40,vs50,vs60"
+func_check "xscmpodp cr1,vs50,vs60"
+func_check "xscmpudp cr1,vs50,vs60"
+func_check "xscpsgndp vs40,vs50,vs60"
+func_check "xscvdpsp vs40,vs60"
+func_check "xscvdpsxds vs40,vs60"
+func_check "xscvdpsxws vs40,vs60"
+func_check "xscvdpuxds vs40,vs60"
+func_check "xscvdpuxws vs40,vs60"
+func_check "xscvspdp vs40,vs60"
+func_check "xscvsxddp vs40,vs60"
+func_check "xscvuxddp vs40,vs60"
+func_check "xsdivdp vs40,vs50,vs60"
+func_check "xsmaddadp vs40,vs50,vs60"
+func_check "xsmaddmdp vs40,vs50,vs60"
+func_check "xsmaxdp vs40,vs50,vs60"
+func_check "xsmindp vs40,vs50,vs60"
+func_check "xsmsubadp vs40,vs50,vs60"
+func_check "xsmsubmdp vs40,vs50,vs60"
+func_check "xsmuldp vs40,vs50,vs60"
+func_check "xsnabsdp vs40,vs60"
+func_check "xsnegdp vs40,vs60"
+func_check "xsnmaddadp vs40,vs50,vs60"
+func_check "xsnmaddmdp vs40,vs50,vs60"
+func_check "xsnmsubadp vs40,vs50,vs60"
+func_check "xsnmsubmdp vs40,vs50,vs60"
+func_check "xsrdpi vs40,vs60"
+func_check "xsrdpic vs40,vs60"
+func_check "xsrdpim vs40,vs60"
+func_check "xsrdpip vs40,vs60"
+func_check "xsrdpiz vs40,vs60"
+func_check "xsredp vs40,vs60"
+func_check "xsrsqrtedp vs40,vs60"
+func_check "xssqrtdp vs40,vs60"
+func_check "xssubdp vs40,vs50,vs60"
+func_check "xstdivdp cr1,vs50,vs60"
+func_check "xstsqrtdp cr1,vs60"
+func_check "xvabsdp vs40,vs60"
+func_check "xvabssp vs40,vs60"
+func_check "xvadddp vs40,vs50,vs60"
+func_check "xvaddsp vs40,vs50,vs60"
+func_check "xvcmpeqdp vs40,vs50,vs60"
+func_check "xvcmpeqdp. vs40,vs50,vs60"
+func_check "xvcmpeqsp vs40,vs50,vs60"
+func_check "xvcmpeqsp. vs40,vs50,vs60"
+func_check "xvcmpgedp vs40,vs50,vs60"
+func_check "xvcmpgedp. vs40,vs50,vs60"
+func_check "xvcmpgesp vs40,vs50,vs60"
+func_check "xvcmpgesp. vs40,vs50,vs60"
+func_check "xvcmpgtdp vs40,vs50,vs60"
+func_check "xvcmpgtdp. vs40,vs50,vs60"
+func_check "xvcmpgtsp vs40,vs50,vs60"
+func_check "xvcmpgtsp. vs40,vs50,vs60"
+func_check "xvcpsgndp vs40,vs50,vs60"
+func_check "xvmovdp vs40,vs60"
+func_check "xvmovdp vs40,vs60"
+func_check "xvcpsgnsp vs40,vs50,vs60"
+func_check "xvmovsp vs40,vs60"
+func_check "xvmovsp vs40,vs60"
+func_check "xvcvdpsp vs40,vs60"
+func_check "xvcvdpsxds vs40,vs60"
+func_check "xvcvdpsxws vs40,vs60"
+func_check "xvcvdpuxds vs40,vs60"
+func_check "xvcvdpuxws vs40,vs60"
+func_check "xvcvspdp vs40,vs60"
+func_check "xvcvspsxds vs40,vs60"
+func_check "xvcvspsxws vs40,vs60"
+func_check "xvcvspuxds vs40,vs60"
+func_check "xvcvspuxws vs40,vs60"
+func_check "xvcvsxddp vs40,vs60"
+func_check "xvcvsxdsp vs40,vs60"
+func_check "xvcvsxwdp vs40,vs60"
+func_check "xvcvsxwsp vs40,vs60"
+func_check "xvcvuxddp vs40,vs60"
+func_check "xvcvuxdsp vs40,vs60"
+func_check "xvcvuxwdp vs40,vs60"
+func_check "xvcvuxwsp vs40,vs60"
+func_check "xvdivdp vs40,vs50,vs60"
+func_check "xvdivsp vs40,vs50,vs60"
+func_check "xvmaddadp vs40,vs50,vs60"
+func_check "xvmaddmdp vs40,vs50,vs60"
+func_check "xvmaddasp vs40,vs50,vs60"
+func_check "xvmaddmsp vs40,vs50,vs60"
+func_check "xvmaxdp vs40,vs50,vs60"
+func_check "xvmaxsp vs40,vs50,vs60"
+func_check "xvmindp vs40,vs50,vs60"
+func_check "xvminsp vs40,vs50,vs60"
+func_check "xvmsubadp vs40,vs50,vs60"
+func_check "xvmsubmdp vs40,vs50,vs60"
+func_check "xvmsubasp vs40,vs50,vs60"
+func_check "xvmsubmsp vs40,vs50,vs60"
+func_check "xvmuldp vs40,vs50,vs60"
+func_check "xvmulsp vs40,vs50,vs60"
+func_check "xvnabsdp vs40,vs60"
+func_check "xvnabssp vs40,vs60"
+func_check "xvnegdp vs40,vs60"
+func_check "xvnegsp vs40,vs60"
+func_check "xvnmaddadp vs40,vs50,vs60"
+func_check "xvnmaddmdp vs40,vs50,vs60"
+func_check "xvnmaddasp vs40,vs50,vs60"
+func_check "xvnmaddmsp vs40,vs50,vs60"
+func_check "xvnmsubadp vs40,vs50,vs60"
+func_check "xvnmsubmdp vs40,vs50,vs60"
+func_check "xvnmsubasp vs40,vs50,vs60"
+func_check "xvnmsubmsp vs40,vs50,vs60"
+func_check "xvrdpi vs40,vs60"
+func_check "xvrdpic vs40,vs60"
+func_check "xvrdpim vs40,vs60"
+func_check "xvrdpip vs40,vs60"
+func_check "xvrdpiz vs40,vs60"
+func_check "xvredp vs40,vs60"
+func_check "xvresp vs40,vs60"
+func_check "xvrspi vs40,vs60"
+func_check "xvrspic vs40,vs60"
+func_check "xvrspim vs40,vs60"
+func_check "xvrspip vs40,vs60"
+func_check "xvrspiz vs40,vs60"
+func_check "xvrsqrtedp vs40,vs60"
+func_check "xvrsqrtesp vs40,vs60"
+func_check "xvsqrtdp vs40,vs60"
+func_check "xvsqrtsp vs40,vs60"
+func_check "xvsubdp vs40,vs50,vs60"
+func_check "xvsubsp vs40,vs50,vs60"
+func_check "xvtdivdp cr1,vs50,vs60"
+func_check "xvtdivsp cr1,vs50,vs60"
+func_check "xvtsqrtdp cr1,vs60"
+func_check "xvtsqrtsp cr1,vs60"
+func_check "xxland vs40,vs50,vs60"
+func_check "xxlandc vs40,vs50,vs60"
+func_check "xxlnor vs40,vs50,vs60"
+func_check "xxlor vs40,vs50,vs60"
+func_check "xxlxor vs40,vs50,vs60"
+func_check "xxmrghw vs40,vs50,vs60"
+func_check "xxmrglw vs40,vs50,vs60"
+func_check "xxmrghd vs40,vs50,vs60"
+func_check "xxpermdi vs40,vs50,vs60,1"
+func_check "xxpermdi vs40,vs50,vs60,2"
+func_check "xxmrgld vs40,vs50,vs60"
+func_check "xxspltd vs40,vs50,0"
+func_check "xxspltd vs40,vs50,0"
+func_check "xxspltd vs40,vs50,1"
+func_check "xxspltd vs40,vs50,1"
+func_check "xxmrghd vs40,vs50,vs60"
+func_check "xxmrghd vs40,vs50,vs60"
+func_check "xxmrgld vs40,vs50,vs60"
+func_check "xxswapd vs40,vs50"
+func_check "xxswapd vs40,vs50"
+func_check "xxsel vs40,vs50,vs60,vs62"
+func_check "xxsldwi vs40,vs50,vs60,2"
+func_check "xxspltw vs40,vs60,2"
+func_check "lxvd2x vs40,0,r20"
+func_check "lxvd2x vs40,r10,r20"
+func_check "stxvd2x vs40,0,r20"
+func_check "stxvd2x vs40,r10,r20"
diff --git a/gdb/testsuite/gdb.arch/powerpc-vsx.s b/gdb/testsuite/gdb.arch/powerpc-vsx.s
new file mode 100644
index 0000000..3986d73
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-vsx.s
@@ -0,0 +1,182 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2014-2017 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+ .text
+ .globl func
+func:
+ .long 0x7d0aa499 /* lxsdx vs40,r10,r20 */
+ .long 0x7d0aa699 /* lxvd2x vs40,r10,r20 */
+ .long 0x7d0aa299 /* lxvdsx vs40,r10,r20 */
+ .long 0x7d0aa619 /* lxvw4x vs40,r10,r20 */
+ .long 0x7d0aa599 /* stxsdx vs40,r10,r20 */
+ .long 0x7d0aa799 /* stxvd2x vs40,r10,r20 */
+ .long 0x7d0aa719 /* stxvw4x vs40,r10,r20 */
+ .long 0xf100e567 /* xsabsdp vs40,vs60 */
+ .long 0xf112e107 /* xsadddp vs40,vs50,vs60 */
+ .long 0xf092e15e /* xscmpodp cr1,vs50,vs60 */
+ .long 0xf092e11e /* xscmpudp cr1,vs50,vs60 */
+ .long 0xf112e587 /* xscpsgndp vs40,vs50,vs60 */
+ .long 0xf100e427 /* xscvdpsp vs40,vs60 */
+ .long 0xf100e563 /* xscvdpsxds vs40,vs60 */
+ .long 0xf100e163 /* xscvdpsxws vs40,vs60 */
+ .long 0xf100e523 /* xscvdpuxds vs40,vs60 */
+ .long 0xf100e123 /* xscvdpuxws vs40,vs60 */
+ .long 0xf100e527 /* xscvspdp vs40,vs60 */
+ .long 0xf100e5e3 /* xscvsxddp vs40,vs60 */
+ .long 0xf100e5a3 /* xscvuxddp vs40,vs60 */
+ .long 0xf112e1c7 /* xsdivdp vs40,vs50,vs60 */
+ .long 0xf112e10f /* xsmaddadp vs40,vs50,vs60 */
+ .long 0xf112e14f /* xsmaddmdp vs40,vs50,vs60 */
+ .long 0xf112e507 /* xsmaxdp vs40,vs50,vs60 */
+ .long 0xf112e547 /* xsmindp vs40,vs50,vs60 */
+ .long 0xf112e18f /* xsmsubadp vs40,vs50,vs60 */
+ .long 0xf112e1cf /* xsmsubmdp vs40,vs50,vs60 */
+ .long 0xf112e187 /* xsmuldp vs40,vs50,vs60 */
+ .long 0xf100e5a7 /* xsnabsdp vs40,vs60 */
+ .long 0xf100e5e7 /* xsnegdp vs40,vs60 */
+ .long 0xf112e50f /* xsnmaddadp vs40,vs50,vs60 */
+ .long 0xf112e54f /* xsnmaddmdp vs40,vs50,vs60 */
+ .long 0xf112e58f /* xsnmsubadp vs40,vs50,vs60 */
+ .long 0xf112e5cf /* xsnmsubmdp vs40,vs50,vs60 */
+ .long 0xf100e127 /* xsrdpi vs40,vs60 */
+ .long 0xf100e1af /* xsrdpic vs40,vs60 */
+ .long 0xf100e1e7 /* xsrdpim vs40,vs60 */
+ .long 0xf100e1a7 /* xsrdpip vs40,vs60 */
+ .long 0xf100e167 /* xsrdpiz vs40,vs60 */
+ .long 0xf100e16b /* xsredp vs40,vs60 */
+ .long 0xf100e12b /* xsrsqrtedp vs40,vs60 */
+ .long 0xf100e12f /* xssqrtdp vs40,vs60 */
+ .long 0xf112e147 /* xssubdp vs40,vs50,vs60 */
+ .long 0xf092e1ee /* xstdivdp cr1,vs50,vs60 */
+ .long 0xf080e1aa /* xstsqrtdp cr1,vs60 */
+ .long 0xf100e767 /* xvabsdp vs40,vs60 */
+ .long 0xf100e667 /* xvabssp vs40,vs60 */
+ .long 0xf112e307 /* xvadddp vs40,vs50,vs60 */
+ .long 0xf112e207 /* xvaddsp vs40,vs50,vs60 */
+ .long 0xf112e31f /* xvcmpeqdp vs40,vs50,vs60 */
+ .long 0xf112e71f /* xvcmpeqdp. vs40,vs50,vs60 */
+ .long 0xf112e21f /* xvcmpeqsp vs40,vs50,vs60 */
+ .long 0xf112e61f /* xvcmpeqsp. vs40,vs50,vs60 */
+ .long 0xf112e39f /* xvcmpgedp vs40,vs50,vs60 */
+ .long 0xf112e79f /* xvcmpgedp. vs40,vs50,vs60 */
+ .long 0xf112e29f /* xvcmpgesp vs40,vs50,vs60 */
+ .long 0xf112e69f /* xvcmpgesp. vs40,vs50,vs60 */
+ .long 0xf112e35f /* xvcmpgtdp vs40,vs50,vs60 */
+ .long 0xf112e75f /* xvcmpgtdp. vs40,vs50,vs60 */
+ .long 0xf112e25f /* xvcmpgtsp vs40,vs50,vs60 */
+ .long 0xf112e65f /* xvcmpgtsp. vs40,vs50,vs60 */
+ .long 0xf112e787 /* xvcpsgndp vs40,vs50,vs60 */
+ .long 0xf11ce787 /* xvmovdp vs40,vs60 */
+ .long 0xf11ce787 /* xvmovdp vs40,vs60 */
+ .long 0xf112e687 /* xvcpsgnsp vs40,vs50,vs60 */
+ .long 0xf11ce687 /* xvmovsp vs40,vs60 */
+ .long 0xf11ce687 /* xvmovsp vs40,vs60 */
+ .long 0xf100e627 /* xvcvdpsp vs40,vs60 */
+ .long 0xf100e763 /* xvcvdpsxds vs40,vs60 */
+ .long 0xf100e363 /* xvcvdpsxws vs40,vs60 */
+ .long 0xf100e723 /* xvcvdpuxds vs40,vs60 */
+ .long 0xf100e323 /* xvcvdpuxws vs40,vs60 */
+ .long 0xf100e727 /* xvcvspdp vs40,vs60 */
+ .long 0xf100e663 /* xvcvspsxds vs40,vs60 */
+ .long 0xf100e263 /* xvcvspsxws vs40,vs60 */
+ .long 0xf100e623 /* xvcvspuxds vs40,vs60 */
+ .long 0xf100e223 /* xvcvspuxws vs40,vs60 */
+ .long 0xf100e7e3 /* xvcvsxddp vs40,vs60 */
+ .long 0xf100e6e3 /* xvcvsxdsp vs40,vs60 */
+ .long 0xf100e3e3 /* xvcvsxwdp vs40,vs60 */
+ .long 0xf100e2e3 /* xvcvsxwsp vs40,vs60 */
+ .long 0xf100e7a3 /* xvcvuxddp vs40,vs60 */
+ .long 0xf100e6a3 /* xvcvuxdsp vs40,vs60 */
+ .long 0xf100e3a3 /* xvcvuxwdp vs40,vs60 */
+ .long 0xf100e2a3 /* xvcvuxwsp vs40,vs60 */
+ .long 0xf112e3c7 /* xvdivdp vs40,vs50,vs60 */
+ .long 0xf112e2c7 /* xvdivsp vs40,vs50,vs60 */
+ .long 0xf112e30f /* xvmaddadp vs40,vs50,vs60 */
+ .long 0xf112e34f /* xvmaddmdp vs40,vs50,vs60 */
+ .long 0xf112e20f /* xvmaddasp vs40,vs50,vs60 */
+ .long 0xf112e24f /* xvmaddmsp vs40,vs50,vs60 */
+ .long 0xf112e707 /* xvmaxdp vs40,vs50,vs60 */
+ .long 0xf112e607 /* xvmaxsp vs40,vs50,vs60 */
+ .long 0xf112e747 /* xvmindp vs40,vs50,vs60 */
+ .long 0xf112e647 /* xvminsp vs40,vs50,vs60 */
+ .long 0xf112e38f /* xvmsubadp vs40,vs50,vs60 */
+ .long 0xf112e3cf /* xvmsubmdp vs40,vs50,vs60 */
+ .long 0xf112e28f /* xvmsubasp vs40,vs50,vs60 */
+ .long 0xf112e2cf /* xvmsubmsp vs40,vs50,vs60 */
+ .long 0xf112e387 /* xvmuldp vs40,vs50,vs60 */
+ .long 0xf112e287 /* xvmulsp vs40,vs50,vs60 */
+ .long 0xf100e7a7 /* xvnabsdp vs40,vs60 */
+ .long 0xf100e6a7 /* xvnabssp vs40,vs60 */
+ .long 0xf100e7e7 /* xvnegdp vs40,vs60 */
+ .long 0xf100e6e7 /* xvnegsp vs40,vs60 */
+ .long 0xf112e70f /* xvnmaddadp vs40,vs50,vs60 */
+ .long 0xf112e74f /* xvnmaddmdp vs40,vs50,vs60 */
+ .long 0xf112e60f /* xvnmaddasp vs40,vs50,vs60 */
+ .long 0xf112e64f /* xvnmaddmsp vs40,vs50,vs60 */
+ .long 0xf112e78f /* xvnmsubadp vs40,vs50,vs60 */
+ .long 0xf112e7cf /* xvnmsubmdp vs40,vs50,vs60 */
+ .long 0xf112e68f /* xvnmsubasp vs40,vs50,vs60 */
+ .long 0xf112e6cf /* xvnmsubmsp vs40,vs50,vs60 */
+ .long 0xf100e327 /* xvrdpi vs40,vs60 */
+ .long 0xf100e3af /* xvrdpic vs40,vs60 */
+ .long 0xf100e3e7 /* xvrdpim vs40,vs60 */
+ .long 0xf100e3a7 /* xvrdpip vs40,vs60 */
+ .long 0xf100e367 /* xvrdpiz vs40,vs60 */
+ .long 0xf100e36b /* xvredp vs40,vs60 */
+ .long 0xf100e26b /* xvresp vs40,vs60 */
+ .long 0xf100e227 /* xvrspi vs40,vs60 */
+ .long 0xf100e2af /* xvrspic vs40,vs60 */
+ .long 0xf100e2e7 /* xvrspim vs40,vs60 */
+ .long 0xf100e2a7 /* xvrspip vs40,vs60 */
+ .long 0xf100e267 /* xvrspiz vs40,vs60 */
+ .long 0xf100e32b /* xvrsqrtedp vs40,vs60 */
+ .long 0xf100e22b /* xvrsqrtesp vs40,vs60 */
+ .long 0xf100e32f /* xvsqrtdp vs40,vs60 */
+ .long 0xf100e22f /* xvsqrtsp vs40,vs60 */
+ .long 0xf112e347 /* xvsubdp vs40,vs50,vs60 */
+ .long 0xf112e247 /* xvsubsp vs40,vs50,vs60 */
+ .long 0xf092e3ee /* xvtdivdp cr1,vs50,vs60 */
+ .long 0xf092e2ee /* xvtdivsp cr1,vs50,vs60 */
+ .long 0xf080e3aa /* xvtsqrtdp cr1,vs60 */
+ .long 0xf080e2aa /* xvtsqrtsp cr1,vs60 */
+ .long 0xf112e417 /* xxland vs40,vs50,vs60 */
+ .long 0xf112e457 /* xxlandc vs40,vs50,vs60 */
+ .long 0xf112e517 /* xxlnor vs40,vs50,vs60 */
+ .long 0xf112e497 /* xxlor vs40,vs50,vs60 */
+ .long 0xf112e4d7 /* xxlxor vs40,vs50,vs60 */
+ .long 0xf112e097 /* xxmrghw vs40,vs50,vs60 */
+ .long 0xf112e197 /* xxmrglw vs40,vs50,vs60 */
+ .long 0xf112e057 /* xxmrghd vs40,vs50,vs60 */
+ .long 0xf112e157 /* xxpermdi vs40,vs50,vs60,1 */
+ .long 0xf112e257 /* xxpermdi vs40,vs50,vs60,2 */
+ .long 0xf112e357 /* xxmrgld vs40,vs50,vs60 */
+ .long 0xf1129057 /* xxspltd vs40,vs50,0 */
+ .long 0xf1129057 /* xxspltd vs40,vs50,0 */
+ .long 0xf1129357 /* xxspltd vs40,vs50,1 */
+ .long 0xf1129357 /* xxspltd vs40,vs50,1 */
+ .long 0xf112e057 /* xxmrghd vs40,vs50,vs60 */
+ .long 0xf112e057 /* xxmrghd vs40,vs50,vs60 */
+ .long 0xf112e357 /* xxmrgld vs40,vs50,vs60 */
+ .long 0xf1129257 /* xxswapd vs40,vs50 */
+ .long 0xf1129257 /* xxswapd vs40,vs50 */
+ .long 0xf112e7bf /* xxsel vs40,vs50,vs60,vs62 */
+ .long 0xf112e217 /* xxsldwi vs40,vs50,vs60,2 */
+ .long 0xf102e293 /* xxspltw vs40,vs60,2 */
+ .long 0x7d00a699 /* lxvd2x vs40,0,r20 */
+ .long 0x7d0aa699 /* lxvd2x vs40,r10,r20 */
+ .long 0x7d00a799 /* stxvd2x vs40,0,r20 */
+ .long 0x7d0aa799 /* stxvd2x vs40,r10,r20 */
diff --git a/gdb/testsuite/gdb.arch/powerpc-vsx2.exp b/gdb/testsuite/gdb.arch/powerpc-vsx2.exp
new file mode 100644
index 0000000..ce2e237
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-vsx2.exp
@@ -0,0 +1,118 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# Test PowerPC instructions disassembly.
+
+standard_testfile .s
+set objfile [standard_output_file ${testfile}.o]
+
+if {![istarget "powerpc*-*-*"]} then {
+ verbose "Skipping PowerPC instructions disassembly."
+ return
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC instructions disassembly"
+ return -1
+}
+
+clean_restart ${objfile}
+
+# Disassemble the function.
+set func ""
+
+gdb_test "set disassembler-options vsx"
+set test "disass func"
+gdb_test_multiple $test $test {
+ -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
+ set func $expect_out(1,string)
+ pass $test
+ }
+}
+
+proc instr_to_patt {instr} {
+ global decimal hex
+ # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
+ return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]"
+}
+
+proc func_check {instr} {
+ global func
+
+ set test "found: $instr"
+ if [regexp -nocase -line [instr_to_patt $instr] $func] {
+ pass $test
+ } else {
+ fail $test
+ }
+}
+
+func_check "lxsiwzx vs62,r14,r26"
+func_check "lxsiwzx vs40,0,r25"
+func_check "lxsiwax vs25,0,r26"
+func_check "lxsiwax vs3,0,r3"
+func_check "mfvsrd r12,vs30"
+func_check "mfvsrd r12,vs30"
+func_check "mfvsrd r12,vs62"
+func_check "mfvsrd r12,vs62"
+func_check "mffprwz r20,f12"
+func_check "mffprwz r20,f12"
+func_check "mfvrwz r21,v12"
+func_check "mfvrwz r21,v12"
+func_check "stxsiwx vs14,r9,r14"
+func_check "stxsiwx vs21,0,r8"
+func_check "mtvsrd vs11,r28"
+func_check "mtvsrd vs11,r28"
+func_check "mtvsrd vs43,r29"
+func_check "mtvsrd vs43,r29"
+func_check "mtfprwa f24,r22"
+func_check "mtfprwa f24,r22"
+func_check "mtvrwa v25,r23"
+func_check "mtvrwa v25,r23"
+func_check "mtfprwz f26,r27"
+func_check "mtfprwz f26,r27"
+func_check "mtvrwz v27,r28"
+func_check "mtvrwz v27,r28"
+func_check "lxsspx vs13,r19,r13"
+func_check "lxsspx vs18,0,r13"
+func_check "stxsspx vs43,r2,r4"
+func_check "stxsspx vs55,0,r11"
+func_check "xsaddsp vs54,vs48,vs25"
+func_check "xsmaddasp vs14,vs50,vs1"
+func_check "xssubsp vs26,vs22,vs42"
+func_check "xsmaddmsp vs27,vs53,vs52"
+func_check "xsrsqrtesp vs8,vs59"
+func_check "xssqrtsp vs12,vs41"
+func_check "xsmulsp vs57,vs11,vs32"
+func_check "xsmsubasp vs38,vs20,vs26"
+func_check "xsdivsp vs26,vs19,vs6"
+func_check "xsmsubmsp vs35,vs37,vs55"
+func_check "xsresp vs59,vs8"
+func_check "xsnmaddasp vs44,vs33,vs33"
+func_check "xsnmaddmsp vs17,vs62,vs30"
+func_check "xsnmsubasp vs54,vs52,vs31"
+func_check "xsnmsubmsp vs37,vs5,vs58"
+func_check "xxlorc vs30,vs54,vs44"
+func_check "xxlnand vs49,vs14,vs29"
+func_check "xxleqv vs62,vs22,vs30"
+func_check "xscvdpspn vs60,vs54"
+func_check "xsrsp vs22,vs45"
+func_check "xscvuxdsp vs26,vs59"
+func_check "xscvsxdsp vs38,vs49"
+func_check "xscvspdpn vs59,vs26"
+func_check "fmrgow f24,f14,f2"
+func_check "fmrgew f22,f7,f5"
diff --git a/gdb/testsuite/gdb.arch/powerpc-vsx2.s b/gdb/testsuite/gdb.arch/powerpc-vsx2.s
new file mode 100644
index 0000000..4ac411b
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-vsx2.s
@@ -0,0 +1,75 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2014-2017 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+ .text
+ .globl func
+func:
+ .long 0x7fced019 /* lxsiwzx vs62,r14,r26 */
+ .long 0x7d00c819 /* lxsiwzx vs40,0,r25 */
+ .long 0x7f20d098 /* lxsiwax vs25,0,r26 */
+ .long 0x7c601898 /* lxsiwax vs3,0,r3 */
+ .long 0x7fcc0066 /* mfvsrd r12,vs30 */
+ .long 0x7fcc0066 /* mfvsrd r12,vs30 */
+ .long 0x7fcc0067 /* mfvsrd r12,vs62 */
+ .long 0x7fcc0067 /* mfvsrd r12,vs62 */
+ .long 0x7d9400e6 /* mffprwz r20,f12 */
+ .long 0x7d9400e6 /* mffprwz r20,f12 */
+ .long 0x7d9500e7 /* mfvrwz r21,v12 */
+ .long 0x7d9500e7 /* mfvrwz r21,v12 */
+ .long 0x7dc97118 /* stxsiwx vs14,r9,r14 */
+ .long 0x7ea04118 /* stxsiwx vs21,0,r8 */
+ .long 0x7d7c0166 /* mtvsrd vs11,r28 */
+ .long 0x7d7c0166 /* mtvsrd vs11,r28 */
+ .long 0x7d7d0167 /* mtvsrd vs43,r29 */
+ .long 0x7d7d0167 /* mtvsrd vs43,r29 */
+ .long 0x7f1601a6 /* mtfprwa f24,r22 */
+ .long 0x7f1601a6 /* mtfprwa f24,r22 */
+ .long 0x7f3701a7 /* mtvrwa v25,r23 */
+ .long 0x7f3701a7 /* mtvrwa v25,r23 */
+ .long 0x7f5b01e6 /* mtfprwz f26,r27 */
+ .long 0x7f5b01e6 /* mtfprwz f26,r27 */
+ .long 0x7f7c01e7 /* mtvrwz v27,r28 */
+ .long 0x7f7c01e7 /* mtvrwz v27,r28 */
+ .long 0x7db36c18 /* lxsspx vs13,r19,r13 */
+ .long 0x7e406c18 /* lxsspx vs18,0,r13 */
+ .long 0x7d622519 /* stxsspx vs43,r2,r4 */
+ .long 0x7ee05d19 /* stxsspx vs55,0,r11 */
+ .long 0xf2d0c805 /* xsaddsp vs54,vs48,vs25 */
+ .long 0xf1d2080c /* xsmaddasp vs14,vs50,vs1 */
+ .long 0xf3565042 /* xssubsp vs26,vs22,vs42 */
+ .long 0xf375a04e /* xsmaddmsp vs27,vs53,vs52 */
+ .long 0xf100d82a /* xsrsqrtesp vs8,vs59 */
+ .long 0xf180482e /* xssqrtsp vs12,vs41 */
+ .long 0xf32b0083 /* xsmulsp vs57,vs11,vs32 */
+ .long 0xf0d4d089 /* xsmsubasp vs38,vs20,vs26 */
+ .long 0xf35330c0 /* xsdivsp vs26,vs19,vs6 */
+ .long 0xf065b8cf /* xsmsubmsp vs35,vs37,vs55 */
+ .long 0xf3604069 /* xsresp vs59,vs8 */
+ .long 0xf1810c0f /* xsnmaddasp vs44,vs33,vs33 */
+ .long 0xf23ef44c /* xsnmaddmsp vs17,vs62,vs30 */
+ .long 0xf2d4fc8d /* xsnmsubasp vs54,vs52,vs31 */
+ .long 0xf0a5d4cb /* xsnmsubmsp vs37,vs5,vs58 */
+ .long 0xf3d66556 /* xxlorc vs30,vs54,vs44 */
+ .long 0xf22eed91 /* xxlnand vs49,vs14,vs29 */
+ .long 0xf3d6f5d1 /* xxleqv vs62,vs22,vs30 */
+ .long 0xf380b42f /* xscvdpspn vs60,vs54 */
+ .long 0xf2c06c66 /* xsrsp vs22,vs45 */
+ .long 0xf340dca2 /* xscvuxdsp vs26,vs59 */
+ .long 0xf0c08ce3 /* xscvsxdsp vs38,vs49 */
+ .long 0xf360d52d /* xscvspdpn vs59,vs26 */
+ .long 0xff0e168c /* fmrgow f24,f14,f2 */
+ .long 0xfec72f8c /* fmrgew f22,f7,f5 */
diff --git a/gdb/testsuite/gdb.arch/powerpc-vsx3.exp b/gdb/testsuite/gdb.arch/powerpc-vsx3.exp
new file mode 100644
index 0000000..8008c63
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-vsx3.exp
@@ -0,0 +1,184 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# Test PowerPC instructions disassembly.
+
+standard_testfile .s
+set objfile [standard_output_file ${testfile}.o]
+
+if {![istarget "powerpc*-*-*"]} then {
+ verbose "Skipping PowerPC instructions disassembly."
+ return
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" } {
+ untested "PowerPC instructions disassembly"
+ return -1
+}
+
+clean_restart ${objfile}
+
+# Disassemble the function.
+set func ""
+
+gdb_test "set disassembler-options vsx"
+set test "disass func"
+gdb_test_multiple $test $test {
+ -re "\r\nDump of assembler code for function func:(\r\n.*\r\n)End of assembler dump.\r\n$gdb_prompt $" {
+ set func $expect_out(1,string)
+ pass $test
+ }
+}
+
+proc instr_to_patt {instr} {
+ global decimal hex
+ # 0x0000000000000018 <+24>: stxvd2x vs43,r4,r5
+ return "\[ \t\]*$hex <\\+$decimal>:\[ \t\]*[string_to_regexp $instr]"
+}
+
+proc func_check {instr} {
+ global func
+
+ set test "found: $instr"
+ if [regexp -nocase -line [instr_to_patt $instr] $func] {
+ pass $test
+ } else {
+ fail $test
+ }
+}
+
+func_check "lxvx vs34,r6,r25"
+func_check "lxvx vs20,0,r10"
+func_check "lxvl vs20,r24,r10"
+func_check "lxvl vs54,0,r29"
+func_check "lxvll vs24,r20,r19"
+func_check "lxvll vs34,0,r14"
+func_check "mfvsrld r2,vs22"
+func_check "lxvwsx vs58,r26,r25"
+func_check "lxvwsx vs55,0,r29"
+func_check "stxvx vs14,r21,r4"
+func_check "stxvx vs30,0,r22"
+func_check "stxvl vs0,r26,r4"
+func_check "stxvl vs37,0,r22"
+func_check "mtvsrws vs24,r10"
+func_check "stxvll vs30,r21,r15"
+func_check "stxvll vs39,0,r14"
+func_check "mtvsrdd vs12,r6,r5"
+func_check "mtvsrdd vs38,0,r21"
+func_check "lxsibzx vs59,r28,r6"
+func_check "lxsibzx vs30,0,r8"
+func_check "lxvh8x vs42,r23,r17"
+func_check "lxvh8x vs36,0,r5"
+func_check "lxsihzx vs12,r9,r11"
+func_check "lxsihzx vs49,0,r13"
+func_check "lxvb16x vs37,r3,r19"
+func_check "lxvb16x vs0,0,r30"
+func_check "stxsibx vs2,r30,r6"
+func_check "stxsibx vs12,0,r13"
+func_check "stxvh8x vs16,r29,r8"
+func_check "stxvh8x vs55,0,r10"
+func_check "stxsihx vs34,r2,r23"
+func_check "stxsihx vs60,0,r23"
+func_check "stxvb16x vs23,r14,r12"
+func_check "stxvb16x vs19,0,r5"
+func_check "lxsd v24,0(0)"
+func_check "lxsd v15,16(r21)"
+func_check "lxssp v6,0(0)"
+func_check "lxssp v23,16(r9)"
+func_check "xscmpeqdp vs18,vs51,vs33"
+func_check "xscmpgtdp vs2,vs26,vs34"
+func_check "xscmpgedp vs5,vs26,vs20"
+func_check "xxperm vs44,vs10,vs43"
+func_check "xxpermr vs41,vs20,vs5"
+func_check "xscmpexpdp cr4,vs18,vs55"
+func_check "xxextractuw vs23,vs37,3"
+func_check "xxspltib vs54,235"
+func_check "xxinsertw vs15,vs30,4"
+func_check "xsmaxcdp vs12,vs11,vs7"
+func_check "xsmincdp vs32,vs25,vs24"
+func_check "xsmaxjdp vs25,vs53,vs12"
+func_check "xststdcsp cr2,vs36,127"
+func_check "xsminjdp vs32,vs21,vs45"
+func_check "xsxexpdp r17,vs50"
+func_check "xsxsigdp r7,vs40"
+func_check "xscvhpdp vs54,vs34"
+func_check "xscvdphp vs58,vs54"
+func_check "xststdcdp cr0,vs38,127"
+func_check "xvtstdcsp vs56,vs53,127"
+func_check "xviexpsp vs54,vs20,vs52"
+func_check "xsiexpdp vs57,r28,r29"
+func_check "xvxexpdp vs1,vs20"
+func_check "xvxsigdp vs54,vs59"
+func_check "xxbrh vs18,vs37"
+func_check "xvxexpsp vs14,vs1"
+func_check "xvxsigsp vs52,vs13"
+func_check "xxbrw vs19,vs5"
+func_check "xxbrd vs51,vs55"
+func_check "xvcvhpsp vs35,vs17"
+func_check "xvcvsphp vs15,vs45"
+func_check "xxbrq vs17,vs31"
+func_check "xvtstdcdp vs16,vs12,127"
+func_check "xviexpdp vs27,vs9,vs8"
+func_check "lxv vs4,0(0)"
+func_check "lxv vs40,16(r20)"
+func_check "stxv vs50,0(0)"
+func_check "stxv vs8,16(r16)"
+func_check "stxsd v3,0(0)"
+func_check "stxsd v17,16(r2)"
+func_check "stxssp v13,0(0)"
+func_check "stxssp v17,16(r13)"
+func_check "xsaddqp v8,v10,v18"
+func_check "xsaddqpo v5,v1,v29"
+func_check "xsrqpi 0,v12,v18,3"
+func_check "xsrqpix 1,v31,v19,0"
+func_check "xsmulqp v14,v1,v6"
+func_check "xsmulqpo v17,v7,v27"
+func_check "xsrqpxp 0,v4,v11,0"
+func_check "xscpsgnqp v29,v23,v28"
+func_check "xscmpoqp cr7,v13,v27"
+func_check "xscmpexpqp cr5,v21,v6"
+func_check "xsmaddqp v2,v19,v4"
+func_check "xsmaddqpo v30,v7,v16"
+func_check "xsmsubqp v21,v30,v15"
+func_check "xsmsubqpo v12,v17,v30"
+func_check "xsnmaddqp v6,v30,v12"
+func_check "xsnmaddqpo v12,v22,v12"
+func_check "xsnmsubqp v10,v29,v27"
+func_check "xsnmsubqpo v29,v29,v13"
+func_check "xssubqp v19,v27,v4"
+func_check "xssubqpo v13,v8,v1"
+func_check "xsdivqp v8,v3,v27"
+func_check "xsdivqpo v24,v20,v27"
+func_check "xscmpuqp cr7,v14,v4"
+func_check "xststdcqp cr4,v2,127"
+func_check "xsabsqp v31,v22"
+func_check "xsxexpqp v25,v3"
+func_check "xsnabsqp v10,v28"
+func_check "xsnegqp v19,v31"
+func_check "xsxsigqp v11,v13"
+func_check "xssqrtqp v13,v14"
+func_check "xssqrtqpo v1,v27"
+func_check "xscvqpuwz v3,v7"
+func_check "xscvudqp v20,v18"
+func_check "xscvqpswz v29,v29"
+func_check "xscvsdqp v2,v28"
+func_check "xscvqpudz v23,v4"
+func_check "xscvqpdp v3,v20"
+func_check "xscvqpdpo v1,v3"
+func_check "xscvdpqp v19,v12"
+func_check "xscvqpsdz v13,v4"
+func_check "xsiexpqp v7,v24,v7"
diff --git a/gdb/testsuite/gdb.arch/powerpc-vsx3.s b/gdb/testsuite/gdb.arch/powerpc-vsx3.s
new file mode 100644
index 0000000..297e1af
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/powerpc-vsx3.s
@@ -0,0 +1,141 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2014-2017 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that 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.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+ .text
+ .globl func
+func:
+ .long 0x7c46ca19 /* lxvx vs34,r6,r25 */
+ .long 0x7e805218 /* lxvx vs20,0,r10 */
+ .long 0x7e98521a /* lxvl vs20,r24,r10 */
+ .long 0x7ec0ea1b /* lxvl vs54,0,r29 */
+ .long 0x7f149a5a /* lxvll vs24,r20,r19 */
+ .long 0x7c40725b /* lxvll vs34,0,r14 */
+ .long 0x7ec20266 /* mfvsrld r2,vs22 */
+ .long 0x7f5acad9 /* lxvwsx vs58,r26,r25 */
+ .long 0x7ee0ead9 /* lxvwsx vs55,0,r29 */
+ .long 0x7dd52318 /* stxvx vs14,r21,r4 */
+ .long 0x7fc0b318 /* stxvx vs30,0,r22 */
+ .long 0x7c1a231a /* stxvl vs0,r26,r4 */
+ .long 0x7ca0b31b /* stxvl vs37,0,r22 */
+ .long 0x7f0a0326 /* mtvsrws vs24,r10 */
+ .long 0x7fd57b5a /* stxvll vs30,r21,r15 */
+ .long 0x7ce0735b /* stxvll vs39,0,r14 */
+ .long 0x7d862b66 /* mtvsrdd vs12,r6,r5 */
+ .long 0x7cc0ab67 /* mtvsrdd vs38,0,r21 */
+ .long 0x7f7c361b /* lxsibzx vs59,r28,r6 */
+ .long 0x7fc0461a /* lxsibzx vs30,0,r8 */
+ .long 0x7d578e59 /* lxvh8x vs42,r23,r17 */
+ .long 0x7c802e59 /* lxvh8x vs36,0,r5 */
+ .long 0x7d895e5a /* lxsihzx vs12,r9,r11 */
+ .long 0x7e206e5b /* lxsihzx vs49,0,r13 */
+ .long 0x7ca39ed9 /* lxvb16x vs37,r3,r19 */
+ .long 0x7c00f6d8 /* lxvb16x vs0,0,r30 */
+ .long 0x7c5e371a /* stxsibx vs2,r30,r6 */
+ .long 0x7d806f1a /* stxsibx vs12,0,r13 */
+ .long 0x7e1d4758 /* stxvh8x vs16,r29,r8 */
+ .long 0x7ee05759 /* stxvh8x vs55,0,r10 */
+ .long 0x7c42bf5b /* stxsihx vs34,r2,r23 */
+ .long 0x7f80bf5b /* stxsihx vs60,0,r23 */
+ .long 0x7eee67d8 /* stxvb16x vs23,r14,r12 */
+ .long 0x7e602fd8 /* stxvb16x vs19,0,r5 */
+ .long 0xe7000002 /* lxsd v24,0(0) */
+ .long 0xe5f50012 /* lxsd v15,16(r21) */
+ .long 0xe4c00003 /* lxssp v6,0(0) */
+ .long 0xe6e90013 /* lxssp v23,16(r9) */
+ .long 0xf253081e /* xscmpeqdp vs18,vs51,vs33 */
+ .long 0xf05a105a /* xscmpgtdp vs2,vs26,vs34 */
+ .long 0xf0baa098 /* xscmpgedp vs5,vs26,vs20 */
+ .long 0xf18a58d3 /* xxperm vs44,vs10,vs43 */
+ .long 0xf13429d1 /* xxpermr vs41,vs20,vs5 */
+ .long 0xf212b9da /* xscmpexpdp cr4,vs18,vs55 */
+ .long 0xf2e32a96 /* xxextractuw vs23,vs37,3 */
+ .long 0xf2c75ad1 /* xxspltib vs54,235 */
+ .long 0xf1e4f2d4 /* xxinsertw vs15,vs30,4 */
+ .long 0xf18b3c00 /* xsmaxcdp vs12,vs11,vs7 */
+ .long 0xf019c441 /* xsmincdp vs32,vs25,vs24 */
+ .long 0xf3356484 /* xsmaxjdp vs25,vs53,vs12 */
+ .long 0xf17f24aa /* xststdcsp cr2,vs36,127 */
+ .long 0xf0156cc3 /* xsminjdp vs32,vs21,vs45 */
+ .long 0xf220956e /* xsxexpdp r17,vs50 */
+ .long 0xf0e1456e /* xsxsigdp r7,vs40 */
+ .long 0xf2d0156f /* xscvhpdp vs54,vs34 */
+ .long 0xf351b56f /* xscvdphp vs58,vs54 */
+ .long 0xf07f35aa /* xststdcdp cr0,vs38,127 */
+ .long 0xf31faeef /* xvtstdcsp vs56,vs53,127 */
+ .long 0xf2d4a6c3 /* xviexpsp vs54,vs20,vs52 */
+ .long 0xf33cef2d /* xsiexpdp vs57,r28,r29 */
+ .long 0xf020a76c /* xvxexpdp vs1,vs20 */
+ .long 0xf2c1df6f /* xvxsigdp vs54,vs59 */
+ .long 0xf2472f6e /* xxbrh vs18,vs37 */
+ .long 0xf1c80f6c /* xvxexpsp vs14,vs1 */
+ .long 0xf2896f6d /* xvxsigsp vs52,vs13 */
+ .long 0xf26f2f6c /* xxbrw vs19,vs5 */
+ .long 0xf277bf6f /* xxbrd vs51,vs55 */
+ .long 0xf0788f6d /* xvcvhpsp vs35,vs17 */
+ .long 0xf1f96f6e /* xvcvsphp vs15,vs45 */
+ .long 0xf23fff6c /* xxbrq vs17,vs31 */
+ .long 0xf21f67ec /* xvtstdcdp vs16,vs12,127 */
+ .long 0xf36947c0 /* xviexpdp vs27,vs9,vs8 */
+ .long 0xf4800001 /* lxv vs4,0(0) */
+ .long 0xf5140019 /* lxv vs40,16(r20) */
+ .long 0xf640000d /* stxv vs50,0(0) */
+ .long 0xf5100015 /* stxv vs8,16(r16) */
+ .long 0xf4600002 /* stxsd v3,0(0) */
+ .long 0xf6220012 /* stxsd v17,16(r2) */
+ .long 0xf5a00003 /* stxssp v13,0(0) */
+ .long 0xf62d0013 /* stxssp v17,16(r13) */
+ .long 0xfd0a9008 /* xsaddqp v8,v10,v18 */
+ .long 0xfca1e809 /* xsaddqpo v5,v1,v29 */
+ .long 0xfd80960a /* xsrqpi 0,v12,v18,3 */
+ .long 0xffe1980b /* xsrqpix 1,v31,v19,0 */
+ .long 0xfdc13048 /* xsmulqp v14,v1,v6 */
+ .long 0xfe27d849 /* xsmulqpo v17,v7,v27 */
+ .long 0xfc80584a /* xsrqpxp 0,v4,v11,0 */
+ .long 0xffb7e0c8 /* xscpsgnqp v29,v23,v28 */
+ .long 0xff8dd908 /* xscmpoqp cr7,v13,v27 */
+ .long 0xfe953148 /* xscmpexpqp cr5,v21,v6 */
+ .long 0xfc532308 /* xsmaddqp v2,v19,v4 */
+ .long 0xffc78309 /* xsmaddqpo v30,v7,v16 */
+ .long 0xfebe7b48 /* xsmsubqp v21,v30,v15 */
+ .long 0xfd91f349 /* xsmsubqpo v12,v17,v30 */
+ .long 0xfcde6388 /* xsnmaddqp v6,v30,v12 */
+ .long 0xfd966389 /* xsnmaddqpo v12,v22,v12 */
+ .long 0xfd5ddbc8 /* xsnmsubqp v10,v29,v27 */
+ .long 0xffbd6bc9 /* xsnmsubqpo v29,v29,v13 */
+ .long 0xfe7b2408 /* xssubqp v19,v27,v4 */
+ .long 0xfda80c09 /* xssubqpo v13,v8,v1 */
+ .long 0xfd03dc48 /* xsdivqp v8,v3,v27 */
+ .long 0xff14dc49 /* xsdivqpo v24,v20,v27 */
+ .long 0xff8e2508 /* xscmpuqp cr7,v14,v4 */
+ .long 0xfe7f1588 /* xststdcqp cr4,v2,127 */
+ .long 0xffe0b648 /* xsabsqp v31,v22 */
+ .long 0xff221e48 /* xsxexpqp v25,v3 */
+ .long 0xfd48e648 /* xsnabsqp v10,v28 */
+ .long 0xfe70fe48 /* xsnegqp v19,v31 */
+ .long 0xfd726e48 /* xsxsigqp v11,v13 */
+ .long 0xfdbb7648 /* xssqrtqp v13,v14 */
+ .long 0xfc3bde49 /* xssqrtqpo v1,v27 */
+ .long 0xfc613e88 /* xscvqpuwz v3,v7 */
+ .long 0xfe829688 /* xscvudqp v20,v18 */
+ .long 0xffa9ee88 /* xscvqpswz v29,v29 */
+ .long 0xfc4ae688 /* xscvsdqp v2,v28 */
+ .long 0xfef12688 /* xscvqpudz v23,v4 */
+ .long 0xfc74a688 /* xscvqpdp v3,v20 */
+ .long 0xfc341e89 /* xscvqpdpo v1,v3 */
+ .long 0xfe766688 /* xscvdpqp v19,v12 */
+ .long 0xfdb92688 /* xscvqpsdz v13,v4 */
+ .long 0xfcf83ec8 /* xsiexpqp v7,v24,v7 */
diff --git a/gdb/testsuite/gdb.arch/s390-disassembler-options.exp b/gdb/testsuite/gdb.arch/s390-disassembler-options.exp
new file mode 100644
index 0000000..af791e4
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/s390-disassembler-options.exp
@@ -0,0 +1,56 @@
+# Copyright 2014-2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+# This test exercises set/show disassembler-options results are preserved
+# across multiple set architecture calls.
+
+if {![istarget "s390*-*-*"]} then {
+ verbose "Skipping S390 disassembler options."
+ return
+}
+
+gdb_exit
+gdb_start
+
+set option "esa"
+set arch1 "s390:64-bit"
+set arch2 "s390:31-bit"
+
+gdb_test "set architecture $arch1" \
+ "The target architecture is assumed to be $arch1" \
+ "set architecture $arch1"
+
+gdb_test_no_output "set disassembler-options"
+gdb_test "show disassembler-options" \
+ "The current disassembler options are ''.*" \
+ "show NULL disassembler-options"
+
+gdb_test_no_output "set disassembler-options $option"
+gdb_test "show disassembler-options" \
+ "The current disassembler options are '$option'.*" \
+ "show disassembler-options $option"
+
+# Change architectures and verify the disassembler options have been preserved.
+
+gdb_test "set architecture $arch2" \
+ "The target architecture is assumed to be $arch2" \
+ "set architecture $arch2"
+
+gdb_test "show disassembler-options" \
+ "The current disassembler options are '$option'.*" \
+ "show disassembler-options $option"
+
diff --git a/gdb/testsuite/gdb.disasm/disassembler-options.exp b/gdb/testsuite/gdb.disasm/disassembler-options.exp
new file mode 100644
index 0000000..48f2b28
--- /dev/null
+++ b/gdb/testsuite/gdb.disasm/disassembler-options.exp
@@ -0,0 +1,34 @@
+# Copyright (C) 2017 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This test exercises set/show disassembler-options
+
+gdb_exit
+gdb_start
+
+gdb_test_no_output "set disassembler-options"
+gdb_test "show disassembler-options" \
+ "The current disassembler options are ''.*" \
+ "show NULL disassembler-options"
+
+set test "set disassembler-options invalid_option_value"
+gdb_test_multiple $test $test {
+ -re "Invalid disassembler option value: 'invalid_option_value'\." {
+ pass $test
+ }
+ -re "'set disassembler-options \.\.\.' is not supported on this architecture\." {
+ pass $test
+ }
+}
diff --git a/include/ChangeLog b/include/ChangeLog
index de28dcb..17e1752 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,19 @@
+2017-02-28 Peter Bergner <bergner@vnet.ibm.com>
+
+ * dis-asm.h (disasm_options_t): New typedef.
+ (parse_arm_disassembler_option): Remove prototype.
+ (set_arm_regname_option): Likewise.
+ (get_arm_regnames): Likewise.
+ (get_arm_regname_num_options): Likewise.
+ (disassemble_init_s390): New prototype.
+ (disassembler_options_powerpc): Likewise.
+ (disassembler_options_arm): Likewise.
+ (disassembler_options_s390): Likewise.
+ (remove_whitespace_and_extra_commas): Likewise.
+ (disassembler_options_cmp): Likewise.
+ (next_disassembler_option): New inline function.
+ (FOR_EACH_DISASSEMBLER_OPTION): New macro.
+
2017-02-28 Alan Modra <amodra@gmail.com>
* elf/ppc64.h (R_PPC64_16DX_HA): New. Expand fake reloc comment.
diff --git a/include/dis-asm.h b/include/dis-asm.h
index 4872920..f054450 100644
--- a/include/dis-asm.h
+++ b/include/dis-asm.h
@@ -222,6 +222,16 @@ typedef struct disassemble_info
} disassemble_info;
+/* This struct is used to pass information about valid disassembler options
+ and their descriptions from the target to the generic GDB functions that
+ set and display them. */
+
+typedef struct
+{
+ const char **name;
+ const char **description;
+} disasm_options_t;
+
/* Standard disassemblers. Disassemble one instruction at the given
target address. Return number of octets processed. */
@@ -332,14 +342,14 @@ extern void print_ppc_disassembler_options (FILE *);
extern void print_riscv_disassembler_options (FILE *);
extern void print_arm_disassembler_options (FILE *);
extern void print_arc_disassembler_options (FILE *);
-extern void parse_arm_disassembler_option (char *);
extern void print_s390_disassembler_options (FILE *);
-extern int get_arm_regname_num_options (void);
-extern int set_arm_regname_option (int);
-extern int get_arm_regnames (int, const char **, const char **, const char *const **);
extern bfd_boolean aarch64_symbol_is_valid (asymbol *, struct disassemble_info *);
extern bfd_boolean arm_symbol_is_valid (asymbol *, struct disassemble_info *);
extern void disassemble_init_powerpc (struct disassemble_info *);
+extern void disassemble_init_s390 (struct disassemble_info *);
+extern const disasm_options_t *disassembler_options_powerpc (void);
+extern const disasm_options_t *disassembler_options_arm (void);
+extern const disasm_options_t *disassembler_options_s390 (void);
/* Fetch the disassembler for a given BFD, if that support is available. */
extern disassembler_ftype disassembler (bfd *);
@@ -351,6 +361,29 @@ extern void disassemble_init_for_target (struct disassemble_info * dinfo);
/* Document any target specific options available from the disassembler. */
extern void disassembler_usage (FILE *);
+/* Remove whitespace and consecutive commas. */
+extern char *remove_whitespace_and_extra_commas (char *);
+
+/* Like STRCMP, but treat ',' the same as '\0' so that we match
+ strings like "foobar" against "foobar,xxyyzz,...". */
+extern int disassembler_options_cmp (const char *, const char *);
+
+/* A helper function for FOR_EACH_DISASSEMBLER_OPTION. */
+static inline char *
+next_disassembler_option (char *options)
+{
+ char *opt = strchr (options, ',');
+ if (opt != NULL)
+ opt++;
+ return opt;
+}
+
+/* A macro for iterating over each comma separated option in OPTIONS. */
+#define FOR_EACH_DISASSEMBLER_OPTION(OPT, OPTIONS) \
+ for ((OPT) = (OPTIONS); \
+ (OPT) != NULL; \
+ (OPT) = next_disassembler_option (OPT))
+
/* This block of definitions is for particular callers who read instructions
into a buffer before calling the instruction decoder. */
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 4eb33bc..0400fca 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,46 @@
+2017-02-28 Peter Bergner <bergner@vnet.ibm.com>
+
+ * disassemble.c Include "safe-ctype.h".
+ (disassemble_init_for_target): Handle s390 init.
+ (remove_whitespace_and_extra_commas): New function.
+ (disassembler_options_cmp): Likewise.
+ * arm-dis.c: Include "libiberty.h".
+ (NUM_ELEM): Delete.
+ (regnames): Use long disassembler style names.
+ Add force-thumb and no-force-thumb options.
+ (NUM_ARM_REGNAMES): Rename from this...
+ (NUM_ARM_OPTIONS): ...to this. Use ARRAY_SIZE.
+ (get_arm_regname_num_options): Delete.
+ (set_arm_regname_option): Likewise.
+ (get_arm_regnames): Likewise.
+ (parse_disassembler_options): Likewise.
+ (parse_arm_disassembler_option): Rename from this...
+ (parse_arm_disassembler_options): ...to this. Make static.
+ Use new FOR_EACH_DISASSEMBLER_OPTION macro to scan over options.
+ (print_insn): Use parse_arm_disassembler_options.
+ (disassembler_options_arm): New function.
+ (print_arm_disassembler_options): Handle updated regnames.
+ * ppc-dis.c: Include "libiberty.h".
+ (ppc_opts): Add "32" and "64" entries.
+ (ppc_parse_cpu): Use ARRAY_SIZE and disassembler_options_cmp.
+ (powerpc_init_dialect): Add break to switch statement.
+ Use new FOR_EACH_DISASSEMBLER_OPTION macro.
+ (disassembler_options_powerpc): New function.
+ (print_ppc_disassembler_options): Use ARRAY_SIZE.
+ Remove printing of "32" and "64".
+ * s390-dis.c: Include "libiberty.h".
+ (init_flag): Remove unneeded variable.
+ (struct s390_options_t): New structure type.
+ (options): New structure.
+ (init_disasm): Rename from this...
+ (disassemble_init_s390): ...to this. Add initializations for
+ current_arch_mask and option_use_insn_len_bits_p. Remove init_flag.
+ (print_insn_s390): Delete call to init_disasm.
+ (disassembler_options_s390): New function.
+ (print_s390_disassembler_options): Print using information from
+ struct 'options'.
+ * po/opcodes.pot: Regenerate.
+
2017-02-28 Jan Beulich <jbeulich@suse.com>
* i386-dis.c (PCMPESTR_Fixup): New.
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
index 2987403..e4f99b8 100644
--- a/opcodes/arm-dis.c
+++ b/opcodes/arm-dis.c
@@ -26,6 +26,7 @@
#include "opcode/arm.h"
#include "opintl.h"
#include "safe-ctype.h"
+#include "libiberty.h"
#include "floatformat.h"
/* FIXME: This shouldn't be done here. */
@@ -41,10 +42,6 @@
#define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
#endif
-#ifndef NUM_ELEM
-#define NUM_ELEM(a) (sizeof (a) / sizeof (a)[0])
-#endif
-
/* Cached mapping symbol state. */
enum map_type
{
@@ -3198,18 +3195,20 @@ arm_regname;
static const arm_regname regnames[] =
{
- { "raw" , "Select raw register names",
+ { "reg-names-raw", N_("Select raw register names"),
{ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"}},
- { "gcc", "Select register names used by GCC",
+ { "reg-names-gcc", N_("Select register names used by GCC"),
{ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "sl", "fp", "ip", "sp", "lr", "pc" }},
- { "std", "Select register names used in ARM's ISA documentation",
+ { "reg-names-std", N_("Select register names used in ARM's ISA documentation"),
{ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "sp", "lr", "pc" }},
- { "apcs", "Select register names used in the APCS",
+ { "force-thumb", N_("Assume all insns are Thumb insns"), {NULL} },
+ { "no-force-thumb", N_("Examine preceding label to determine an insn's type"), {NULL} },
+ { "reg-names-apcs", N_("Select register names used in the APCS"),
{ "a1", "a2", "a3", "a4", "v1", "v2", "v3", "v4", "v5", "v6", "sl", "fp", "ip", "sp", "lr", "pc" }},
- { "atpcs", "Select register names used in the ATPCS",
+ { "reg-names-atpcs", N_("Select register names used in the ATPCS"),
{ "a1", "a2", "a3", "a4", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "IP", "SP", "LR", "PC" }},
- { "special-atpcs", "Select special register names used in the ATPCS",
- { "a1", "a2", "a3", "a4", "v1", "v2", "v3", "WR", "v5", "SB", "SL", "FP", "IP", "SP", "LR", "PC" }},
+ { "reg-names-special-atpcs", N_("Select special register names used in the ATPCS"),
+ { "a1", "a2", "a3", "a4", "v1", "v2", "v3", "WR", "v5", "SB", "SL", "FP", "IP", "SP", "LR", "PC" }}
};
static const char *const iwmmxt_wwnames[] =
@@ -3235,7 +3234,7 @@ static const char *const iwmmxt_cregnames[] =
/* Default to GCC register name set. */
static unsigned int regname_selected = 1;
-#define NUM_ARM_REGNAMES NUM_ELEM (regnames)
+#define NUM_ARM_OPTIONS ARRAY_SIZE (regnames)
#define arm_regnames regnames[regname_selected].reg_names
static bfd_boolean force_thumb = FALSE;
@@ -3254,31 +3253,6 @@ static bfd_vma ifthen_address;
/* Functions. */
-int
-get_arm_regname_num_options (void)
-{
- return NUM_ARM_REGNAMES;
-}
-
-int
-set_arm_regname_option (int option)
-{
- int old = regname_selected;
- regname_selected = option;
- return old;
-}
-
-int
-get_arm_regnames (int option,
- const char **setname,
- const char **setdescription,
- const char *const **register_names)
-{
- *setname = regnames[option].name;
- *setdescription = regnames[option].description;
- *register_names = regnames[option].reg_names;
- return 16;
-}
/* Decode a bitfield of the form matching regexp (N(-N)?,)*N(-N)?.
Returns pointer to following character of the format string and
@@ -6124,64 +6098,39 @@ arm_symbol_is_valid (asymbol * sym,
return (name && *name != '$' && strncmp (name, "__tagsym$$", 10));
}
-/* Parse an individual disassembler option. */
+/* Parse the string of disassembler options. */
-void
-parse_arm_disassembler_option (char *option)
+static void
+parse_arm_disassembler_options (char *options)
{
- if (option == NULL)
- return;
+ char *opt;
- if (CONST_STRNEQ (option, "reg-names-"))
+ FOR_EACH_DISASSEMBLER_OPTION (opt, options)
{
- int i;
-
- option += 10;
-
- for (i = NUM_ARM_REGNAMES; i--;)
- if (strneq (option, regnames[i].name, strlen (regnames[i].name)))
- {
- regname_selected = i;
- break;
- }
+ if (CONST_STRNEQ (opt, "reg-names-"))
+ {
+ unsigned int i;
+ for (i = 0; i < NUM_ARM_OPTIONS; i++)
+ if (disassembler_options_cmp (opt, regnames[i].name) == 0)
+ {
+ regname_selected = i;
+ break;
+ }
- if (i < 0)
- /* XXX - should break 'option' at following delimiter. */
- fprintf (stderr, _("Unrecognised register name set: %s\n"), option);
+ if (i >= NUM_ARM_OPTIONS)
+ fprintf (stderr, _("Unrecognised register name set: %s\n"), opt);
+ }
+ else if (CONST_STRNEQ (opt, "force-thumb"))
+ force_thumb = 1;
+ else if (CONST_STRNEQ (opt, "no-force-thumb"))
+ force_thumb = 0;
+ else
+ fprintf (stderr, _("Unrecognised disassembler option: %s\n"), opt);
}
- else if (CONST_STRNEQ (option, "force-thumb"))
- force_thumb = 1;
- else if (CONST_STRNEQ (option, "no-force-thumb"))
- force_thumb = 0;
- else
- /* XXX - should break 'option' at following delimiter. */
- fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
return;
}
-/* Parse the string of disassembler options, spliting it at whitespaces
- or commas. (Whitespace separators supported for backwards compatibility). */
-
-static void
-parse_disassembler_options (char *options)
-{
- if (options == NULL)
- return;
-
- while (*options)
- {
- parse_arm_disassembler_option (options);
-
- /* Skip forward to next seperator. */
- while ((*options) && (! ISSPACE (*options)) && (*options != ','))
- ++ options;
- /* Skip forward past seperators. */
- while (ISSPACE (*options) || (*options == ','))
- ++ options;
- }
-}
-
static bfd_boolean
mapping_symbol_for_insn (bfd_vma pc, struct disassemble_info *info,
enum map_type *map_symbol);
@@ -6473,7 +6422,7 @@ print_insn (bfd_vma pc, struct disassemble_info *info, bfd_boolean little)
if (info->disassembler_options)
{
- parse_disassembler_options (info->disassembler_options);
+ parse_arm_disassembler_options (info->disassembler_options);
/* To avoid repeated parsing of these options, we remove them here. */
info->disassembler_options = NULL;
@@ -6842,21 +6791,51 @@ print_insn_little_arm (bfd_vma pc, struct disassemble_info *info)
return print_insn (pc, info, TRUE);
}
+const disasm_options_t *
+disassembler_options_arm (void)
+{
+ static disasm_options_t *opts = NULL;
+
+ if (opts == NULL)
+ {
+ unsigned int i;
+ opts = XNEW (disasm_options_t);
+ opts->name = XNEWVEC (const char *, NUM_ARM_OPTIONS + 1);
+ opts->description = XNEWVEC (const char *, NUM_ARM_OPTIONS + 1);
+ for (i = 0; i < NUM_ARM_OPTIONS; i++)
+ {
+ opts->name[i] = regnames[i].name;
+ if (regnames[i].description != NULL)
+ opts->description[i] = _(regnames[i].description);
+ else
+ opts->description[i] = NULL;
+ }
+ /* The array we return must be NULL terminated. */
+ opts->name[i] = NULL;
+ opts->description[i] = NULL;
+ }
+
+ return opts;
+}
+
void
print_arm_disassembler_options (FILE *stream)
{
- int i;
-
+ unsigned int i, max_len = 0;
fprintf (stream, _("\n\
The following ARM specific disassembler options are supported for use with\n\
the -M switch:\n"));
- for (i = NUM_ARM_REGNAMES; i--;)
- fprintf (stream, " reg-names-%s %*c%s\n",
- regnames[i].name,
- (int)(14 - strlen (regnames[i].name)), ' ',
- regnames[i].description);
+ for (i = 0; i < NUM_ARM_OPTIONS; i++)
+ {
+ unsigned int len = strlen (regnames[i].name);
+ if (max_len < len)
+ max_len = len;
+ }
- fprintf (stream, " force-thumb Assume all insns are Thumb insns\n");
- fprintf (stream, " no-force-thumb Examine preceding label to determine an insn's type\n\n");
+ for (i = 0, max_len++; i < NUM_ARM_OPTIONS; i++)
+ fprintf (stream, " %s%*c %s\n",
+ regnames[i].name,
+ (int)(max_len - strlen (regnames[i].name)), ' ',
+ _(regnames[i].description));
}
diff --git a/opcodes/disassemble.c b/opcodes/disassemble.c
index 1b15242..eef0658 100644
--- a/opcodes/disassemble.c
+++ b/opcodes/disassemble.c
@@ -20,6 +20,7 @@
#include "sysdep.h"
#include "dis-asm.h"
+#include "safe-ctype.h"
#ifdef ARCH_all
#define ARCH_aarch64
@@ -649,7 +650,76 @@ disassemble_init_for_target (struct disassemble_info * info)
disassemble_init_powerpc (info);
break;
#endif
+#ifdef ARCH_s390
+ case bfd_arch_s390:
+ disassemble_init_s390 (info);
+ break;
+#endif
default:
break;
}
}
+
+/* Remove whitespace and consecutive commas from OPTIONS. */
+
+char *
+remove_whitespace_and_extra_commas (char *options)
+{
+ char *str;
+ size_t i, len;
+
+ if (options == NULL)
+ return NULL;
+
+ /* Strip off all trailing whitespace and commas. */
+ for (len = strlen (options); len > 0; len--)
+ {
+ if (!ISSPACE (options[len - 1]) && options[len - 1] != ',')
+ break;
+ options[len - 1] = '\0';
+ }
+
+ /* Convert all remaining whitespace to commas. */
+ for (i = 0; options[i] != '\0'; i++)
+ if (ISSPACE (options[i]))
+ options[i] = ',';
+
+ /* Remove consecutive commas. */
+ for (str = options; *str != '\0'; str++)
+ if (*str == ',' && (*(str + 1) == ',' || str == options))
+ {
+ char *next = str + 1;
+ while (*next == ',')
+ next++;
+ len = strlen (next);
+ if (str != options)
+ str++;
+ memmove (str, next, len);
+ next[len - (size_t)(next - str)] = '\0';
+ }
+ return (strlen (options) != 0) ? options : NULL;
+}
+
+/* Like STRCMP, but treat ',' the same as '\0' so that we match
+ strings like "foobar" against "foobar,xxyyzz,...". */
+
+int
+disassembler_options_cmp (const char *s1, const char *s2)
+{
+ unsigned char c1, c2;
+
+ do
+ {
+ c1 = (unsigned char) *s1++;
+ if (c1 == ',')
+ c1 = '\0';
+ c2 = (unsigned char) *s2++;
+ if (c2 == ',')
+ c2 = '\0';
+ if (c1 == '\0')
+ return c1 - c2;
+ }
+ while (c1 == c2);
+
+ return c1 - c2;
+}
diff --git a/opcodes/po/opcodes.pot b/opcodes/po/opcodes.pot
index 56c7a23..e64a678 100644
--- a/opcodes/po/opcodes.pot
+++ b/opcodes/po/opcodes.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2016-12-23 09:23+0100\n"
+"POT-Creation-Date: 2017-02-08 13:38-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,8 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. Invalid option.
-#. XXX - should break 'option' at following delimiter.
-#: aarch64-dis.c:81 arc-dis.c:699 arm-dis.c:6158
+#: aarch64-dis.c:81 arc-dis.c:769 arm-dis.c:6158
#, c-format
msgid "Unrecognised disassembler option: %s\n"
msgstr ""
@@ -54,7 +53,7 @@ msgid ""
msgstr ""
#: aarch64-dis.c:3215 mips-dis.c:2477 mips-dis.c:2485 mips-dis.c:2487
-#: riscv-dis.c:505
+#: riscv-dis.c:506
#, c-format
msgid "\n"
msgstr ""
@@ -262,7 +261,7 @@ msgstr ""
msgid "jump hint unaligned"
msgstr ""
-#: arc-dis.c:323
+#: arc-dis.c:368
msgid ""
"\n"
"Warning: disassembly may be wrong due to guessed opcode class choice.\n"
@@ -270,7 +269,7 @@ msgid ""
"\t\t\t\t"
msgstr ""
-#: arc-dis.c:1182
+#: arc-dis.c:1267
#, c-format
msgid ""
"\n"
@@ -278,37 +277,37 @@ msgid ""
"with -M switch (multiple options should be separated by commas):\n"
msgstr ""
-#: arc-dis.c:1186
+#: arc-dis.c:1271
#, c-format
msgid " dsp Recognize DSP instructions.\n"
msgstr ""
-#: arc-dis.c:1188
+#: arc-dis.c:1273
#, c-format
msgid " spfp Recognize FPX SP instructions.\n"
msgstr ""
-#: arc-dis.c:1190
+#: arc-dis.c:1275
#, c-format
msgid " dpfp Recognize FPX DP instructions.\n"
msgstr ""
-#: arc-dis.c:1192
+#: arc-dis.c:1277
#, c-format
msgid " quarkse_em Recognize FPU QuarkSE-EM instructions.\n"
msgstr ""
-#: arc-dis.c:1194
+#: arc-dis.c:1279
#, c-format
msgid " fpuda Recognize double assist FPU instructions.\n"
msgstr ""
-#: arc-dis.c:1196
+#: arc-dis.c:1281
#, c-format
msgid " fpus Recognize single precision FPU instructions.\n"
msgstr ""
-#: arc-dis.c:1198
+#: arc-dis.c:1283
#, c-format
msgid " fpud Recognize double precision FPU instructions.\n"
msgstr ""
@@ -454,17 +453,49 @@ msgstr ""
msgid "Value must be in the range 0 to 31"
msgstr ""
-#: arm-dis.c:3634
+#: arm-dis.c:3202
+msgid "Select raw register names"
+msgstr ""
+
+#: arm-dis.c:3204
+msgid "Select register names used by GCC"
+msgstr ""
+
+#: arm-dis.c:3206
+msgid "Select register names used in ARM's ISA documentation"
+msgstr ""
+
+#: arm-dis.c:3208
+msgid "Select register names used in the APCS"
+msgstr ""
+
+#: arm-dis.c:3210
+msgid "Select register names used in the ATPCS"
+msgstr ""
+
+#: arm-dis.c:3212
+msgid "Select special register names used in the ATPCS"
+msgstr ""
+
+#. All non "reg-names-* options must be listed last.
+#: arm-dis.c:3216
+msgid "Assume all insns are Thumb insns"
+msgstr ""
+
+#: arm-dis.c:3217
+msgid "Examine preceding label to determine an insn's type"
+msgstr ""
+
+#: arm-dis.c:3638
msgid "<illegal precision>"
msgstr ""
-#. XXX - should break 'option' at following delimiter.
-#: arm-dis.c:6150
+#: arm-dis.c:6151
#, c-format
msgid "Unrecognised register name set: %s\n"
msgstr ""
-#: arm-dis.c:6850
+#: arm-dis.c:6855
#, c-format
msgid ""
"\n"
@@ -472,17 +503,17 @@ msgid ""
"the -M switch:\n"
msgstr ""
-#: avr-dis.c:114 avr-dis.c:135
+#: avr-dis.c:115 avr-dis.c:136
#, c-format
msgid "undefined"
msgstr ""
-#: avr-dis.c:214
+#: avr-dis.c:215
#, c-format
msgid "Internal disassembler error"
msgstr ""
-#: avr-dis.c:267
+#: avr-dis.c:268
#, c-format
msgid "unknown constraint `%c'"
msgstr ""
@@ -573,12 +604,12 @@ msgstr ""
#: ip2k-asm.c:789 ip2k-asm.c:896 iq2000-asm.c:644 iq2000-asm.c:648
#: iq2000-asm.c:737 iq2000-asm.c:844 lm32-asm.c:534 lm32-asm.c:538
#: lm32-asm.c:627 lm32-asm.c:734 m32c-asm.c:1769 m32c-asm.c:1773
-#: m32c-asm.c:1862 m32c-asm.c:1969 m32r-asm.c:513 m32r-asm.c:517
-#: m32r-asm.c:606 m32r-asm.c:713 mep-asm.c:1472 mep-asm.c:1476 mep-asm.c:1565
-#: mep-asm.c:1672 mt-asm.c:780 mt-asm.c:784 mt-asm.c:873 mt-asm.c:980
-#: or1k-asm.c:688 or1k-asm.c:692 or1k-asm.c:781 or1k-asm.c:888 xc16x-asm.c:561
-#: xc16x-asm.c:565 xc16x-asm.c:654 xc16x-asm.c:761 xstormy16-asm.c:461
-#: xstormy16-asm.c:465 xstormy16-asm.c:554 xstormy16-asm.c:661
+#: m32c-asm.c:1862 m32c-asm.c:1969 m32r-asm.c:513 m32r-asm.c:517 m32r-asm.c:606
+#: m32r-asm.c:713 mep-asm.c:1472 mep-asm.c:1476 mep-asm.c:1565 mep-asm.c:1672
+#: mt-asm.c:780 mt-asm.c:784 mt-asm.c:873 mt-asm.c:980 or1k-asm.c:688
+#: or1k-asm.c:692 or1k-asm.c:781 or1k-asm.c:888 xc16x-asm.c:561 xc16x-asm.c:565
+#: xc16x-asm.c:654 xc16x-asm.c:761 xstormy16-asm.c:461 xstormy16-asm.c:465
+#: xstormy16-asm.c:554 xstormy16-asm.c:661
msgid "unrecognized instruction"
msgstr ""
@@ -636,9 +667,8 @@ msgid "*unknown*"
msgstr ""
#: epiphany-dis.c:277 fr30-dis.c:298 frv-dis.c:395 ip2k-dis.c:287
-#: iq2000-dis.c:188 lm32-dis.c:146 m32c-dis.c:890 m32r-dis.c:278
-#: mep-dis.c:1186 mt-dis.c:289 or1k-dis.c:140 xc16x-dis.c:419
-#: xstormy16-dis.c:167
+#: iq2000-dis.c:188 lm32-dis.c:146 m32c-dis.c:890 m32r-dis.c:278 mep-dis.c:1186
+#: mt-dis.c:289 or1k-dis.c:140 xc16x-dis.c:419 xstormy16-dis.c:167
#, c-format
msgid "Unrecognized field %d while printing insn.\n"
msgstr ""
@@ -760,11 +790,11 @@ msgstr ""
msgid "%02x\t\t*unknown*"
msgstr ""
-#: i386-dis.c:12198
+#: i386-dis.c:12200
msgid "<internal disassembler error>"
msgstr ""
-#: i386-dis.c:12490
+#: i386-dis.c:12492
#, c-format
msgid ""
"\n"
@@ -773,145 +803,145 @@ msgid ""
"with the -M switch (multiple options should be separated by commas):\n"
msgstr ""
-#: i386-dis.c:12494
+#: i386-dis.c:12496
#, c-format
msgid " x86-64 Disassemble in 64bit mode\n"
msgstr ""
-#: i386-dis.c:12495
+#: i386-dis.c:12497
#, c-format
msgid " i386 Disassemble in 32bit mode\n"
msgstr ""
-#: i386-dis.c:12496
+#: i386-dis.c:12498
#, c-format
msgid " i8086 Disassemble in 16bit mode\n"
msgstr ""
-#: i386-dis.c:12497
+#: i386-dis.c:12499
#, c-format
msgid " att Display instruction in AT&T syntax\n"
msgstr ""
-#: i386-dis.c:12498
+#: i386-dis.c:12500
#, c-format
msgid " intel Display instruction in Intel syntax\n"
msgstr ""
-#: i386-dis.c:12499
+#: i386-dis.c:12501
#, c-format
msgid ""
" att-mnemonic\n"
" Display instruction in AT&T mnemonic\n"
msgstr ""
-#: i386-dis.c:12501
+#: i386-dis.c:12503
#, c-format
msgid ""
" intel-mnemonic\n"
" Display instruction in Intel mnemonic\n"
msgstr ""
-#: i386-dis.c:12503
+#: i386-dis.c:12505
#, c-format
msgid " addr64 Assume 64bit address size\n"
msgstr ""
-#: i386-dis.c:12504
+#: i386-dis.c:12506
#, c-format
msgid " addr32 Assume 32bit address size\n"
msgstr ""
-#: i386-dis.c:12505
+#: i386-dis.c:12507
#, c-format
msgid " addr16 Assume 16bit address size\n"
msgstr ""
-#: i386-dis.c:12506
+#: i386-dis.c:12508
#, c-format
msgid " data32 Assume 32bit data size\n"
msgstr ""
-#: i386-dis.c:12507
+#: i386-dis.c:12509
#, c-format
msgid " data16 Assume 16bit data size\n"
msgstr ""
-#: i386-dis.c:12508
+#: i386-dis.c:12510
#, c-format
msgid " suffix Always display instruction suffix in AT&T syntax\n"
msgstr ""
-#: i386-dis.c:12509
+#: i386-dis.c:12511
#, c-format
msgid " amd64 Display instruction in AMD64 ISA\n"
msgstr ""
-#: i386-dis.c:12510
+#: i386-dis.c:12512
#, c-format
msgid " intel64 Display instruction in Intel64 ISA\n"
msgstr ""
-#: i386-dis.c:13061
+#: i386-dis.c:13063
msgid "64-bit address is disabled"
msgstr ""
-#: i386-gen.c:674 ia64-gen.c:306
+#: i386-gen.c:679 ia64-gen.c:306
#, c-format
msgid "%s: Error: "
msgstr ""
-#: i386-gen.c:838
+#: i386-gen.c:843
#, c-format
msgid "%s: %d: Unknown bitfield: %s\n"
msgstr ""
-#: i386-gen.c:840
+#: i386-gen.c:845
#, c-format
msgid "Unknown bitfield: %s\n"
msgstr ""
-#: i386-gen.c:899
+#: i386-gen.c:904
#, c-format
msgid "%s: %d: Missing `)' in bitfield: %s\n"
msgstr ""
-#: i386-gen.c:1170
+#: i386-gen.c:1175
#, c-format
msgid "can't find i386-opc.tbl for reading, errno = %s\n"
msgstr ""
-#: i386-gen.c:1301
+#: i386-gen.c:1306
#, c-format
msgid "can't find i386-reg.tbl for reading, errno = %s\n"
msgstr ""
-#: i386-gen.c:1378
+#: i386-gen.c:1383
#, c-format
msgid "can't create i386-init.h, errno = %s\n"
msgstr ""
-#: i386-gen.c:1468 ia64-gen.c:2829
+#: i386-gen.c:1473 ia64-gen.c:2829
#, c-format
msgid "unable to change directory to \"%s\", errno = %s\n"
msgstr ""
-#: i386-gen.c:1480 i386-gen.c:1483
+#: i386-gen.c:1485 i386-gen.c:1488
#, c-format
msgid "CpuMax != %d!\n"
msgstr ""
-#: i386-gen.c:1487
+#: i386-gen.c:1492
#, c-format
msgid "%d unused bits in i386_cpu_flags.\n"
msgstr ""
-#: i386-gen.c:1494
+#: i386-gen.c:1499
#, c-format
msgid "%d unused bits in i386_operand_type.\n"
msgstr ""
-#: i386-gen.c:1508
+#: i386-gen.c:1513
#, c-format
msgid "can't create i386-tbl.h, errno = %s\n"
msgstr ""
@@ -1181,12 +1211,12 @@ msgstr ""
msgid "Invalid size specifier"
msgstr ""
-#: m68k-dis.c:1278
+#: m68k-dis.c:1292
#, c-format
msgid "<function code %d>"
msgstr ""
-#: m68k-dis.c:1437
+#: m68k-dis.c:1455
#, c-format
msgid "<internal error in opcode table: %s %s>\n"
msgstr ""
@@ -1229,7 +1259,7 @@ msgstr ""
msgid "Value is not aligned enough"
msgstr ""
-#: mips-dis.c:1633 mips-dis.c:1844
+#: mips-dis.c:1634 mips-dis.c:1846
#, c-format
msgid "# internal error, undefined operand in `%s %s'"
msgstr ""
@@ -1359,20 +1389,20 @@ msgstr ""
msgid "Error: read from memory failed"
msgstr ""
-#: msp430-dis.c:485
+#: msp430-dis.c:499
msgid "Warning: illegal as emulation instr"
msgstr ""
#. R2/R3 are illegal as dest: may be data section.
-#: msp430-dis.c:569
+#: msp430-dis.c:591
msgid "Warning: illegal as 2-op instr"
msgstr ""
-#: msp430-dis.c:950
+#: msp430-dis.c:1002
msgid "Warning: unrecognised CALLA addressing mode"
msgstr ""
-#: msp430-dis.c:1232 msp430-dis.c:1249 msp430-dis.c:1270
+#: msp430-dis.c:1303 msp430-dis.c:1324 msp430-dis.c:1345
#, c-format
msgid "Warning: reserved use of A/L and B/W bits detected"
msgstr ""
@@ -1403,12 +1433,12 @@ msgstr ""
msgid "$<undefined>"
msgstr ""
-#: ppc-dis.c:345
+#: ppc-dis.c:347
#, c-format
msgid "warning: ignoring unknown -M%s option\n"
msgstr ""
-#: ppc-dis.c:775
+#: ppc-dis.c:793
#, c-format
msgid ""
"\n"
@@ -1490,12 +1520,12 @@ msgstr ""
msgid "Unrecognized disassembler option: %s\n"
msgstr ""
-#: riscv-dis.c:342
+#: riscv-dis.c:343
#, c-format
msgid "# internal error, undefined modifier (%c)"
msgstr ""
-#: riscv-dis.c:494
+#: riscv-dis.c:495
#, c-format
msgid ""
"\n"
@@ -1503,14 +1533,14 @@ msgid ""
"with the -M switch (multiple options should be separated by commas):\n"
msgstr ""
-#: riscv-dis.c:498
+#: riscv-dis.c:499
#, c-format
msgid ""
"\n"
" numeric Print numeric reigster names, rather than ABI names.\n"
msgstr ""
-#: riscv-dis.c:501
+#: riscv-dis.c:502
#, c-format
msgid ""
"\n"
@@ -1518,29 +1548,24 @@ msgid ""
" than into pseudoinstructions.\n"
msgstr ""
-#: s390-dis.c:366
-#, c-format
-msgid ""
-"\n"
-"The following S/390 specific disassembler options are supported for use\n"
-"with the -M switch (multiple options should be separated by commas):\n"
+#: s390-dis.c:42
+msgid "Disassemble in ESA architecture mode"
msgstr ""
-#: s390-dis.c:370
-#, c-format
-msgid " esa Disassemble in ESA architecture mode\n"
+#: s390-dis.c:43
+msgid "Disassemble in z/Architecture mode"
msgstr ""
-#: s390-dis.c:371
-#, c-format
-msgid " zarch Disassemble in z/Architecture mode\n"
+#: s390-dis.c:44
+msgid "Print unknown instructions according to length from first two bits"
msgstr ""
-#: s390-dis.c:372
+#: s390-dis.c:400
#, c-format
msgid ""
-" insnlength Print unknown instructions according to length from first two "
-"bits\n"
+"\n"
+"The following S/390 specific disassembler options are supported for use\n"
+"with the -M switch (multiple options should be separated by commas):\n"
msgstr ""
#: score-dis.c:662 score-dis.c:869 score-dis.c:1030 score-dis.c:1144
diff --git a/opcodes/ppc-dis.c b/opcodes/ppc-dis.c
index e0eff7a..3f8aef8 100644
--- a/opcodes/ppc-dis.c
+++ b/opcodes/ppc-dis.c
@@ -26,6 +26,7 @@
#include "elf/ppc.h"
#include "opintl.h"
#include "opcode/ppc.h"
+#include "libiberty.h"
/* This file provides several disassembler functions, all of which use
the disassembler interface defined in dis-asm.h. Several functions
@@ -172,8 +173,12 @@ struct ppc_mopt ppc_opts[] = {
0 },
{ "ppc32", PPC_OPCODE_PPC,
0 },
+ { "32", PPC_OPCODE_PPC,
+ 0 },
{ "ppc64", PPC_OPCODE_PPC | PPC_OPCODE_64,
0 },
+ { "64", PPC_OPCODE_PPC | PPC_OPCODE_64,
+ 0 },
{ "ppc64bridge", PPC_OPCODE_PPC | PPC_OPCODE_64_BRIDGE,
0 },
{ "ppcps", PPC_OPCODE_PPC | PPC_OPCODE_PPCPS,
@@ -252,8 +257,8 @@ ppc_parse_cpu (ppc_cpu_t ppc_cpu, ppc_cpu_t *sticky, const char *arg)
{
unsigned int i;
- for (i = 0; i < sizeof (ppc_opts) / sizeof (ppc_opts[0]); i++)
- if (strcmp (ppc_opts[i].opt, arg) == 0)
+ for (i = 0; i < ARRAY_SIZE (ppc_opts); i++)
+ if (disassembler_options_cmp (ppc_opts[i].opt, arg) == 0)
{
if (ppc_opts[i].sticky)
{
@@ -264,7 +269,7 @@ ppc_parse_cpu (ppc_cpu_t ppc_cpu, ppc_cpu_t *sticky, const char *arg)
ppc_cpu = ppc_opts[i].cpu;
break;
}
- if (i >= sizeof (ppc_opts) / sizeof (ppc_opts[0]))
+ if (i >= ARRAY_SIZE (ppc_opts))
return 0;
ppc_cpu |= *sticky;
@@ -278,7 +283,6 @@ powerpc_init_dialect (struct disassemble_info *info)
{
ppc_cpu_t dialect = 0;
ppc_cpu_t sticky = 0;
- char *arg;
struct dis_private *priv = calloc (sizeof (*priv), 1);
if (priv == NULL)
@@ -324,29 +328,22 @@ powerpc_init_dialect (struct disassemble_info *info)
break;
default:
dialect = ppc_parse_cpu (dialect, &sticky, "power9") | PPC_OPCODE_ANY;
+ break;
}
- arg = info->disassembler_options;
- while (arg != NULL)
+ char *opt;
+ FOR_EACH_DISASSEMBLER_OPTION (opt, info->disassembler_options)
{
ppc_cpu_t new_cpu = 0;
- char *end = strchr (arg, ',');
-
- if (end != NULL)
- *end = 0;
- if ((new_cpu = ppc_parse_cpu (dialect, &sticky, arg)) != 0)
- dialect = new_cpu;
- else if (strcmp (arg, "32") == 0)
+ if (disassembler_options_cmp (opt, "32") == 0)
dialect &= ~(ppc_cpu_t) PPC_OPCODE_64;
- else if (strcmp (arg, "64") == 0)
+ else if (disassembler_options_cmp (opt, "64") == 0)
dialect |= PPC_OPCODE_64;
+ else if ((new_cpu = ppc_parse_cpu (dialect, &sticky, opt)) != 0)
+ dialect = new_cpu;
else
- fprintf (stderr, _("warning: ignoring unknown -M%s option\n"), arg);
-
- if (end != NULL)
- *end++ = ',';
- arg = end;
+ fprintf (stderr, _("warning: ignoring unknown -M%s option\n"), opt);
}
info->private_data = priv;
@@ -767,6 +764,26 @@ print_insn_powerpc (bfd_vma memaddr,
return 4;
}
+const disasm_options_t *
+disassembler_options_powerpc (void)
+{
+ static disasm_options_t *opts = NULL;
+
+ if (opts == NULL)
+ {
+ size_t i, num_options = ARRAY_SIZE (ppc_opts);
+ opts = XNEW (disasm_options_t);
+ opts->name = XNEWVEC (const char *, num_options + 1);
+ for (i = 0; i < num_options; i++)
+ opts->name[i] = ppc_opts[i].opt;
+ /* The array we return must be NULL terminated. */
+ opts->name[i] = NULL;
+ opts->description = NULL;
+ }
+
+ return opts;
+}
+
void
print_ppc_disassembler_options (FILE *stream)
{
@@ -776,7 +793,7 @@ print_ppc_disassembler_options (FILE *stream)
The following PPC specific disassembler options are supported for use with\n\
the -M switch:\n"));
- for (col = 0, i = 0; i < sizeof (ppc_opts) / sizeof (ppc_opts[0]); i++)
+ for (col = 0, i = 0; i < ARRAY_SIZE (ppc_opts); i++)
{
col += fprintf (stream, " %s,", ppc_opts[i].opt);
if (col > 66)
@@ -785,5 +802,5 @@ the -M switch:\n"));
col = 0;
}
}
- fprintf (stream, " 32, 64\n");
+ fprintf (stream, "\n");
}
diff --git a/opcodes/s390-dis.c b/opcodes/s390-dis.c
index 328ba2d..2d97a2a 100644
--- a/opcodes/s390-dis.c
+++ b/opcodes/s390-dis.c
@@ -25,16 +25,30 @@
#include "dis-asm.h"
#include "opintl.h"
#include "opcode/s390.h"
+#include "libiberty.h"
-static int init_flag = 0;
static int opc_index[256];
static int current_arch_mask = 0;
static int option_use_insn_len_bits_p = 0;
+typedef struct
+{
+ const char *name;
+ const char *description;
+} s390_options_t;
+
+static const s390_options_t options[] =
+{
+ { "esa" , N_("Disassemble in ESA architecture mode") },
+ { "zarch", N_("Disassemble in z/Architecture mode") },
+ { "insnlength", N_("Print unknown instructions according to "
+ "length from first two bits") }
+};
+
/* Set up index table for first opcode byte. */
-static void
-init_disasm (struct disassemble_info *info)
+void
+disassemble_init_s390 (struct disassemble_info *info)
{
int i;
const char *p;
@@ -46,6 +60,9 @@ init_disasm (struct disassemble_info *info)
for (i = s390_num_opcodes; i--; )
opc_index[s390_opcodes[i].opcode[0]] = i;
+ current_arch_mask = 1 << S390_OPCODE_ZARCH;
+ option_use_insn_len_bits_p = 0;
+
for (p = info->disassembler_options; p != NULL; )
{
if (CONST_STRNEQ (p, "esa"))
@@ -61,11 +78,6 @@ init_disasm (struct disassemble_info *info)
if (p != NULL)
p++;
}
-
- if (!current_arch_mask)
- current_arch_mask = 1 << S390_OPCODE_ZARCH;
-
- init_flag = 1;
}
/* Derive the length of an instruction from its first byte. */
@@ -266,9 +278,6 @@ print_insn_s390 (bfd_vma memaddr, struct disassemble_info *info)
unsigned int value;
int status, opsize, bufsize, bytes_to_dump, i;
- if (init_flag == 0)
- init_disasm (info);
-
/* The output looks better if we put 6 bytes on a line. */
info->bytes_per_line = 6;
@@ -360,15 +369,48 @@ print_insn_s390 (bfd_vma memaddr, struct disassemble_info *info)
return 0;
}
+const disasm_options_t *
+disassembler_options_s390 (void)
+{
+ static disasm_options_t *opts = NULL;
+
+ if (opts == NULL)
+ {
+ size_t i, num_options = ARRAY_SIZE (options);
+ opts = XNEW (disasm_options_t);
+ opts->name = XNEWVEC (const char *, num_options + 1);
+ opts->description = XNEWVEC (const char *, num_options + 1);
+ for (i = 0; i < num_options; i++)
+ {
+ opts->name[i] = options[i].name;
+ opts->description[i] = _(options[i].description);
+ }
+ /* The array we return must be NULL terminated. */
+ opts->name[i] = NULL;
+ opts->description[i] = NULL;
+ }
+
+ return opts;
+}
+
void
print_s390_disassembler_options (FILE *stream)
{
+ unsigned int i, max_len = 0;
fprintf (stream, _("\n\
The following S/390 specific disassembler options are supported for use\n\
with the -M switch (multiple options should be separated by commas):\n"));
- fprintf (stream, _(" esa Disassemble in ESA architecture mode\n"));
- fprintf (stream, _(" zarch Disassemble in z/Architecture mode\n"));
- fprintf (stream, _(" insnlength Print unknown instructions according "
- "to length from first two bits\n"));
+ for (i = 0; i < ARRAY_SIZE (options); i++)
+ {
+ unsigned int len = strlen (options[i].name);
+ if (max_len < len)
+ max_len = len;
+ }
+
+ for (i = 0, max_len++; i < ARRAY_SIZE (options); i++)
+ fprintf (stream, " %s%*c %s\n",
+ options[i].name,
+ (int)(max_len - strlen (options[i].name)), ' ',
+ _(options[i].description));
}