From cce4814f14a5f3ae48ac1202f48769cbfea53e51 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 21 Feb 2003 19:05:02 +0000 Subject: [PATCH] Update Maverick tests. Contribute test generator. --- gas/ChangeLog | 4 + gas/NEWS | 3 + gas/testsuite/ChangeLog | 13 + gas/testsuite/gas/all/test-example.c | 103 +++ gas/testsuite/gas/all/test-gen.c | 744 +++++++++++++++++++++ gas/testsuite/gas/arm/arm.exp | 5 +- gas/testsuite/gas/arm/maverick.c | 364 ++++++----- gas/testsuite/gas/arm/maverick.d | 924 +++++++++++++-------------- 8 files changed, 1528 insertions(+), 632 deletions(-) create mode 100644 gas/testsuite/gas/all/test-example.c create mode 100644 gas/testsuite/gas/all/test-gen.c diff --git a/gas/ChangeLog b/gas/ChangeLog index b084f685a2c..f9fc360051c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2003-02-21 Nick Clifton + + * NEWS: Mention availability of test generator program. + 2003-02-21 Miles Bader * config/tc-v850.c (system_registers): Add v850e debug registers. diff --git a/gas/NEWS b/gas/NEWS index 367ddafcb61..703b4e1ae4c 100644 --- a/gas/NEWS +++ b/gas/NEWS @@ -1,5 +1,8 @@ -*- text -*- +* An assembler test generator has been contributed and an example file that + uses it (gas/testsuite/gas/all/test-gen.c and test-exmaple.c). + * Support for SH2E added. * GASP has now been removed. diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 58d8f0c6ef8..f4d9e736a54 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2003-02-21 Nick Clifton + + * gas/all/test-gen.c: New file: Framework for automatically + generating assembler test files. + * gas/all/test-examples.c: New file: Example of a file using + test-gen.c. + + * gas/arm/maverick.c: Rework to produce correct test files and + fix formatting. + * gas/arm/maverick.s: Regenerate. + * gas/arm/maverick.d: Regenerate. + * gas/arm/arm.exp: Always run Maverick tests. + 2003-02-21 Richard Sandiford * gas/mips/elf-rel14.[sd]: New test. diff --git a/gas/testsuite/gas/all/test-example.c b/gas/testsuite/gas/all/test-example.c new file mode 100644 index 00000000000..a6474264349 --- /dev/null +++ b/gas/testsuite/gas/all/test-example.c @@ -0,0 +1,103 @@ +/* Copyright (C) 2000, 2003 Free Software Foundation + Contributed by Alexandre Oliva + + This file 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. */ + +/* Generator of tests for insns introduced in AM33 2.0. + + See the following file for usage and documentation. */ +#include "../all/test-gen.c" + +/* Define any char*[]s you may need here. */ +char *named_regs[] = { "a", "b", "c", "d" }; + +/* Define helper macros to generate register accesses here. */ +#define namedregs(shift) \ + reg_r (named_regs, shift, 0x3, mk_get_bits (2u)) +#define numberedregs(shift) \ + reg_p ("f", shift, mk_get_bits (2u)) + +/* Define helper functions here. */ +int +jmp_cond (func_arg * arg, insn_data * data) +#define jmp_cond(shift) { jmp_cond, { i1: shift } } +{ + static const char conds[4][2] = { "z", "n", "g", "l" }; + unsigned val = get_bits (2u); + + data->as_in = data->dis_out = strdup (conds[val]); + data->bits = val << arg->i1; + + /* Do not forget to return 0, otherwise the insn will be skipped. */ + return 0; +} + +/* Define convenience wrappers to define_insn. */ +#define cond_jmp_insn(insname, word, funcs...) \ + define_insn (insname, \ + insn_size_bits (insname, 1, word), \ + jmp_cond (4), \ + tab, \ + ## funcs) + +/* Define insns. */ +cond_jmp_insn (j, 0x40, numberedregs(2), comma, namedregs (0)); + +/* Define an insn group. */ +func *jmp_insns[] = + { + insn (j), + 0 + }; + +/* Define the set of all groups. */ +group_t +groups[] = + { + { "jumps", jmp_insns }, + { 0 } + }; + +int +main (int argc, char *argv[]) +{ + FILE *as_in = stdout, *dis_out = stderr; + + /* Check whether we're filtering insns. */ + if (argc > 1) + skip_list = argv + 1; + + /* Output assembler header. */ + fputs ("\t.text\n" + "\t.align\n", + as_in); + /* Output comments for the testsuite-driver and the initial + disassembler output. */ + fputs ("#objdump: -dr --prefix-address --show-raw-insn\n" + "#name: Foo Digital Processor\n" + "#as: -mfood\n" + "\n" + "# Test the instructions of FooD\n" + "\n" + ".*: +file format.*food.*\n" + "\n" + "Disassembly of section .text:\n", + dis_out); + + /* Now emit all (selected) insns. */ + output_groups (groups, as_in, dis_out); + + exit (0); +} diff --git a/gas/testsuite/gas/all/test-gen.c b/gas/testsuite/gas/all/test-gen.c new file mode 100644 index 00000000000..50412d3d66e --- /dev/null +++ b/gas/testsuite/gas/all/test-gen.c @@ -0,0 +1,744 @@ +#ifndef TEST_GEN_C +#define TEST_GEN_C 1 + +/* Copyright (C) 2000, 2003 Free Software Foundation + Contributed by Alexandre Oliva + + This file 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. */ + +/* This is a source file with infra-structure to test generators for + assemblers and disassemblers. + + The strategy to generate testcases is as follows. We'll output to + two streams: one will get the assembly source, and the other will + get regexps that match the expected binary patterns. + + To generate each instruction, the functions of a func[] are called, + each with the corresponding func_arg. Each function should set + members of insn_data, to decide what it's going to output to the + assembly source, the corresponding output for the disassembler + tester, and the bits to be set in the instruction word. The + strings to be output must have been allocated with strdup() or + malloc(), so that they can be freed. A function may also modify + insn_size. More details in test-gen.c + + Because this would have generated too many tests, we have chosen to + define ``random'' sequences of numbers/registers, and simply + generate each instruction a couple of times, which should get us + enough coverage. + + In general, test generators should be compiled/run as follows: + + % gcc test.c -o test + % ./test > test.s 2 > test.d + + Please note that this file contains a couple of GCC-isms, such as + macro varargs (also available in C99, but with a difference syntax) + and labeled elements in initializers (so that insn definitions are + simpler and safer). + + It is assumed that the test generator #includes this file after + defining any of the preprocessor macros documented below. The test + generator is supposed to define instructions, at least one group of + instructions, optionally, a sequence of groups. + + It should also define a main() function that outputs the initial + lines of the assembler input and of the test control file, that + also contains the disassembler output. The main() funcion may + optionally set skip_list too, before calling output_groups() or + output_insns(). */ + +/* Define to 1 to avoid repeating instructions and to use a simpler + register/constant generation mechanism. This makes it much easier + to verify that the generated bit patterns are correct. */ +#ifndef SIMPLIFY_OUTPUT +#define SIMPLIFY_OUTPUT 0 +#endif + +/* Define to 0 to avoid generating disassembler tests. */ +#ifndef DISASSEMBLER_TEST +#define DISASSEMBLER_TEST 1 +#endif + +/* Define to the number of times to repeat the generation of each + insn. It's best to use prime numbers, to improve randomization. */ +#ifndef INSN_REPEAT +#define INSN_REPEAT 5 +#endif + +/* Define in order to get randomization_counter printed, as a comment, + in the disassembler output, after each insn is emitted. */ +#ifndef OUTPUT_RANDOMIZATION_COUNTER +#define OUTPUT_RANDOMIZATION_COUNTER 0 +#endif + +/* Other configuration macros are DEFINED_WORD and DEFINED_FUNC_ARG, + see below. */ + +#include +#include +#include + +/* It is expected that the main program defines the type `word' before + includeing this. */ +#ifndef DEFINED_WORD +typedef unsigned long long word; +#endif + +/* This struct is used as the output area for each function. It + should store in as_in a pointer to the string to be output to the + assembler; in dis_out, the string to be expected in return from the + disassembler, and in bits the bits of the instruction word that are + enabled by the assembly fragment. */ +typedef struct +{ + char * as_in; + char * dis_out; + word bits; +} insn_data; + +#ifndef DEFINED_FUNC_ARG +/* This is the struct that feeds information to each function. You're + free to extend it, by `typedef'ing it before including this file, + and defining DEFINED_FUNC_ARG. You may even reorder the fields, + but do not remove any of the existing fields. */ +typedef struct +{ + int i1; + int i2; + int i3; + void * p1; + void * p2; + word w; +} func_arg; +#endif + +/* This is the struct whose arrays define insns. Each func in the + array will be called, in sequence, being given a pointer to the + associated arg and a pointer to a zero-initialized output area, + that it may fill in. */ +typedef struct +{ + int (* func) (func_arg *, insn_data *); + func_arg arg; +} func; + +/* Use this to group insns under a name. */ +typedef struct +{ + const char * name; + func ** insns; +} group_t; + +/* This is the size of each instruction. Use `insn_size_bits' instead + of `insn_bits' in an insn defition to modify it. */ +int insn_size = 4; + +/* The offset of the next insn, as expected in the disassembler + output. */ +int current_offset = 0; + +/* The offset and name of the last label to be emitted. */ +int last_label_offset = 0; +const char * last_label_name = 0; + +/* This variable may be initialized in main() to `argv+1', if + `argc>1', so that tests are emitted only for instructions that + match exactly one of the given command-line arguments. If it is + NULL, tests for all instructions are emitted. It must be a + NULL-terminated array of pointers to strings (just like + `argv+1'). */ +char ** skip_list = 0; + +/* This is a counter used to walk the various arrays of ``random'' + operand generation. In simplified output mode, it is zeroed after + each insn, otherwise it just keeps growing. */ +unsigned randomization_counter = 0; + +/* Use `define_insn' to create an array of funcs to define an insn, + then `insn' to refer to that insn when defining an insn group. */ +#define define_insn(insname, funcs...) \ + func i_ ## insname[] = { funcs, { 0 } } +#define insn(insname) (i_ ## insname) + +/* Use these to output a comma followed by an optional space, a single + space, a plus sign, left and right square brackets and parentheses, + all of them properly quoted. */ +#define comma literal_q (", ", ", ?") +#define space literal (" ") +#define tab literal ("\t") +#define plus literal_q ("+", "\\+") +#define lsqbkt literal_q ("[", "\\[") +#define rsqbkt literal_q ("]", "\\]") +#define lparen literal_q ("(", "\\(") +#define rparen literal_q (")", "\\)") + +/* Use this as a placeholder when you define a macro that expects an + argument, but you don't have anything to output there. */ +int +nothing (func_arg *arg, insn_data *data) +#define nothing { nothing } +{ + return 0; +} + +/* This is to be used in the argument list of define_insn, causing a + string to be copied into both the assembly and the expected + disassembler output. It is assumed not to modify the binary + encoding of the insn. */ +int +literal (func_arg *arg, insn_data *data) +#define literal(s) { literal, { p1: (s) } } +{ + data->as_in = data->dis_out = strdup ((char *) arg->p1); + return 0; +} + +/* The characters `[', `]', `\\' and `^' must be quoted in the + disassembler-output matcher. If a literal string contains any of + these characters, use literal_q instead of literal, and specify the + unquoted version (for as input) as the first argument, and the + quoted version (for expected disassembler output) as the second + one. */ +int +literal_q (func_arg *arg, insn_data *data) +#define literal_q(s,q) { literal_q, { p1: (s), p2: (q) } } +{ + data->as_in = strdup ((char *) arg->p1); + data->dis_out = strdup ((char *) arg->p2); + return 0; +} + +/* Given an insn name, check whether it should be skipped or not, + depending on skip_list. Return non-zero if the insn is to be + skipped. */ +int +skip_insn (char *name) +{ + char **test; + + if (! skip_list) + return 0; + + for (test = skip_list; * test; ++ test) + if (strcmp (name, * test) == 0) + return 0; + + return 1; +} + +/* Use this to emit the actual insn name, with its opcode, in + architectures with fixed-length instructions. */ +int +insn_bits (func_arg *arg, insn_data *data) +#define insn_bits(name,bits) \ + { insn_bits, { p1: # name, w: bits } } +{ + if (skip_insn ((char *) arg->p1)) + return 1; + data->as_in = data->dis_out = strdup ((char *) arg->p1); + data->bits = arg->w; + return 0; +} + +/* Use this to emit the insn name and its opcode in architectures + without a variable instruction length. */ +int +insn_size_bits (func_arg *arg, insn_data *data) +#define insn_size_bits(name,size,bits) \ + { insn_size_bits, { p1: # name, i1: size, w: bits } } +{ + if (skip_insn ((char *) arg->p1)) + return 1; + data->as_in = data->dis_out = strdup ((char *) arg->p1); + data->bits = arg->w; + insn_size = arg->i1; + return 0; +} + +/* Use this to advance the random generator by one, in case it is + generating repetitive patterns. It is usually good to arrange that + each insn consumes a prime number of ``random'' numbers, or, at + least, that it does not consume an exact power of two ``random'' + numbers. */ +int +tick_random (func_arg *arg, insn_data *data) +#define tick_random { tick_random } +{ + ++ randomization_counter; + return 0; +} + +/* Select the next ``random'' number from the array V of size S, and + advance the counter. */ +#define get_bits_from_size(V,S) \ + ((V)[randomization_counter ++ % (S)]) + +/* Utility macros. `_get_bits_var', used in some macros below, assume + the names of the arrays used to define the ``random'' orders start + with `random_order_'. */ +#define _get_bits_var(N) (random_order_ ## N) +#define _get_bits_size(V) (sizeof (V) / sizeof * (V)) + +/* Use this within a `func_arg' to select one of the arrays below (or + any other array that starts with random_order_N. */ +#define mk_get_bits(N) \ + p2: _get_bits_var (N), i3: _get_bits_size (_get_bits_var (N)) + +/* Simplified versions of get_bits_from_size for when you have access + to the array, so that its size can be implicitly calculated. */ +#define get_bits_from(V) get_bits_from_size ((V),_get_bits_size ((V))) +#define get_bits(N) get_bits_from (_get_bits_var (N)) + + +/* Use `2u' to generate 2-bit unsigned values. Good for selecting + registers randomly from a set of 4 registers. */ +unsigned random_order_2u[] = + { + /* This sequence was generated by hand so that no digit appers more + than once in any horizontal or vertical line. */ + 0, 1, 3, 2, + 2, 0, 1, 3, + 1, 3, 2, 0, + 3, 2, 0, 1 + }; + +/* Use `3u' to generate 3-bit unsigned values. Good for selecting + registers randomly from a set of 8 registers. */ +unsigned random_order_3u[] = + { + /* This sequence was generated by: + f(k) = 3k mod 8 + except that the middle pairs were swapped. */ + 0, 6, 3, 1, 4, 2, 7, 5, + /* This sequence was generated by: + f(k) = 5k mod 8 + except that the middle pairs were swapped. */ + 0, 2, 5, 7, 4, 6, 1, 3, + }; + +/* Use `4u' to generate 4-bit unsigned values. Good for selecting + registers randomly from a set of 16 registers. */ +unsigned random_order_4u[] = + { + /* This sequence was generated by: + f(k) = 5k mod 16 + except that the middle pairs were swapped. */ + 0, 5, 15, 10, 9, 4, 14, 3, + 8, 13, 7, 2, 1, 12, 6, 11, + /* This sequence was generated by: + f(k) = 7k mod 16 + except that the middle pairs were swapped. */ + 0, 7, 5, 14, 3, 12, 10, 1, + 8, 15, 13, 6, 11, 4, 2, 9, + }; + +/* Use `5u' to generate 5-bit unsigned values. Good for selecting + registers randomly from a set of 32 registers. */ +unsigned random_order_5u[] = + { + /* This sequence was generated by: + f(k) = (13k) mod 32 + except that the middle pairs were swapped. */ + 0, 26, 13, 7, 20, 14, 1, 27, + 8, 2, 21, 15, 28, 22, 9, 3, + 16, 10, 29, 23, 4, 30, 17, 11, + 24, 18, 5, 31, 12, 6, 25, 19 + }; + +/* Use `7s' to generate 7-bit signed values. Good for selecting + ``interesting'' constants from -64 to +63. */ +int random_order_7s[] = + { + /* Sequence generated by hand, to explore limit values and a few + intermediate values selected by chance. Keep the number of + intermediate values low, to ensure that the limit values are + generated often enough. */ + 0, -1, -64, 63, -32, 32, 24, -20, + 9, -27, -31, 33, 40, -2, -5, 1 + }; + +/* Use `8s' to generate 8-bit signed values. Good for selecting + ``interesting'' constants from -128 to +127. */ +int random_order_8s[] = + { + /* Sequence generated by hand, to explore limit values and a few + intermediate values selected by chance. Keep the number of + intermediate values low, to ensure that the limit values are + generated often enough. */ + 0, -1, -128, 127, -32, 32, 24, -20, + 73, -27, -95, 33, 104, -2, -69, 1 + }; + +/* Use `9s' to generate 9-bit signed values. Good for selecting + ``interesting'' constants from -256 to +255. */ +int random_order_9s[] = + { + /* Sequence generated by hand, to explore limit values and a few + intermediate values selected by chance. Keep the number of + intermediate values low, to ensure that the limit values are + generated often enough. */ + 0, -1, -256, 255, -64, 64, 72, -40, + 73, -137, -158, 37, 104, -240, -69, 1 + }; + +/* Use `16s' to generate 16-bit signed values. Good for selecting + ``interesting'' constants from -32768 to +32767. */ +int random_order_16s[] = + { + /* Sequence generated by hand, to explore limit values and a few + intermediate values selected by chance. Keep the number of + intermediate values low, to ensure that the limit values are + generated often enough. */ + -32768, + 32767, + (-1 << 15) | (64 << 8) | 32, + (64 << 8) | 32, + 0x1234, + (-1 << 15) | 0x8765, + 0x0180, + (-1 << 15) | 0x8001 +}; + +/* Use `24s' to generate 24-bit signed values. Good for selecting + ``interesting'' constants from -2^23 to 2^23-1. */ +int random_order_24s[] = + { + /* Sequence generated by hand, to explore limit values and a few + intermediate values selected by chance. Keep the number of + intermediate values low, to ensure that the limit values are + generated often enough. */ + -1 << 23, + 1 << 23 -1, + (-1 << 23) | (((64 << 8) | 32) << 8) | 16, + (((64 << 8) | 32) << 8) | 16, + 0x123456, + (-1 << 23) | 0x876543, + 0x01ff80, + (-1 << 23) | 0x80ff01 +}; + +/* Use `32s' to generate 32-bit signed values. Good for selecting + ``interesting'' constants from -2^31 to 2^31-1. */ +int random_order_32s[] = + { + /* Sequence generated by hand, to explore limit values and a few + intermediate values selected by chance. Keep the number of + intermediate values low, to ensure that the limit values are + generated often enough. */ + -1 << 31, + 1 << 31 - 1, + (-1 << 31) | (((((64 << 8) | 32) << 8) | 16) << 8) | 8, + (((((64 << 8) | 32) << 8) | 16) << 8) | 8, + 0x12345678, + (-1 << 31) | 0x87654321, + 0x01ffff80, + (-1 << 31) | 0x80ffff01 + }; + +/* This function computes the number of digits needed to represent a + given number. */ +unsigned long +ulen (unsigned long i, unsigned base) +{ + int count = 0; + + if (i == 0) + return 1; + for (; i > 0; ++ count) + i /= base; + return count; +} + +/* Use this to generate a signed constant of the given size, shifted + by the given amount, with the specified endianness. */ +int +signed_constant (func_arg * arg, insn_data * data) +#define signed_constant(bits, shift, revert) \ + { signed_constant, { i1: shift, i2: bits * (revert ? -1 : 1), \ + mk_get_bits (bits ## s) } } +{ + long val = get_bits_from_size ((unsigned *) arg->p2, arg->i3); + int len = (val >= 0 ? ulen (val, 10) : (1 + ulen (-val, 10))); + int nbits = (arg->i2 >= 0 ? arg->i2 : -arg->i2); + word bits = ((word) val) & (((((word) 1) << (nbits - 1)) << 1) - 1); + + data->as_in = data->dis_out = malloc (len + 1); + sprintf (data->as_in, "%ld", val); + if (arg->i2 < 0) + { + word rbits = 0; + + do + { + rbits <<= 8; + rbits |= bits & 0xff; + bits >>= 8; + nbits -= 8; + } + while (nbits > 0); + + bits = rbits; + } + data->bits = bits << arg->i1; + + return 0; +} + +/* Use this to generate a unsigned constant of the given size, shifted + by the given amount, with the specified endianness. */ +int +unsigned_constant (func_arg * arg, insn_data * data) +#define unsigned_constant(bits, shift, revert) \ + { unsigned_constant, { i1: shift, i2: bits * (revert ? -1 : 1), \ + mk_get_bits (bits ## s) } } +{ + int nbits = (arg->i2 >= 0 ? arg->i2 : -arg->i2); + unsigned long val = + get_bits_from_size ((unsigned *) arg->p2, arg->i3) + & (((((word) 1) << (nbits - 1)) << 1) - 1); + int len = ulen (val, 10); + word bits = val; + + data->as_in = data->dis_out = malloc (len + 1); + sprintf (data->as_in, "%lu", val); + if (arg->i2 < 0) + { + word rbits = 0; + + do + { + rbits <<= 8; + rbits |= bits & 0xff; + bits >>= 8; + nbits -= 8; + } + while (nbits > 0); + + bits = rbits; + } + data->bits = bits << arg->i1; + + return 0; +} + +/* Use this to generate an absolute address of the given size, shifted + by the given amount, with the specified endianness. */ +int +absolute_address (func_arg *arg, insn_data *data) +#define absolute_address (bits, shift, revert) \ + { absolute_address, { i1: shift, i2: bits * (revert ? -1 : 1), \ + mk_get_bits (bits ## s) } } +{ + int nbits = (arg->i2 >= 0 ? arg->i2 : -arg->i2); + unsigned long val = + get_bits_from_size ((unsigned *) arg->p2, arg->i3) + & (((((word) 1) << (nbits - 1)) << 1) - 1); + word bits = val; + + data->as_in = malloc (ulen (val, 10) + 1); + sprintf (data->as_in, "%lu", val); + data->dis_out = malloc (nbits / 4 + 11); + sprintf (data->dis_out, "0*%0*lx <[^>]*>", nbits / 4, val); + if (arg->i2 < 0) + { + word rbits = 0; + + do + { + rbits <<= 8; + rbits |= bits & 0xff; + bits >>= 8; + nbits -= 8; + } + while (nbits > 0); + + bits = rbits; + } + data->bits = bits << arg->i1; + + return 0; +} + +/* Use this to generate a register name that starts with a given + prefix, and is followed by a number generated by `gen' (see + mk_get_bits below). The register number is shifted `shift' bits + left before being stored in the binary insn. */ +int +reg_p (func_arg *arg, insn_data *data) +#define reg_p(prefix,shift,gen) \ + { reg_p, { i1: (shift), p1: (prefix), gen } } +{ + unsigned reg = get_bits_from_size ((unsigned *) arg->p2, arg->i3); + char *regname = (char *) arg->p1; + + data->as_in = data->dis_out = malloc (strlen (regname) + ulen (reg, 10) + 1); + sprintf (data->as_in, "%s%u", regname, reg); + data->bits = reg; + data->bits <<= arg->i1; + return 0; +} + +/* Use this to generate a register name taken from an array. The + index into the array `names' is to be produced by `gen', but `mask' + may be used to filter out some of the bits before choosing the + disassembler output and the bits for the binary insn, shifted left + by `shift'. For example, if registers have canonical names, but + can also be referred to by aliases, the array can be n times larger + than the actual number of registers, and the mask is then used to + pick the canonical name for the disassembler output, and to + eliminate the extra bits from the binary output. */ +int +reg_r (func_arg *arg, insn_data *data) +#define reg_r(names,shift,mask,gen) \ + { reg_r, { i1: (shift), i2: (mask), p1: (names), gen } } +{ + unsigned reg = get_bits_from_size ((unsigned *) arg->p2, arg->i3); + + data->as_in = strdup (((const char **) arg->p1)[reg]); + reg &= arg->i2; + data->dis_out = strdup (((const char **) arg->p1)[reg]); + data->bits = reg; + data->bits <<= arg->i1; + return 0; +} + +/* Given a NULL-terminated array of insns-definitions (pointers to + arrays of funcs), output test code for the insns to as_in (assembly + input) and dis_out (expected disassembler output). */ +void +output_insns (func **insn, FILE *as_in, FILE *dis_out) +{ + for (; *insn; ++insn) + { + insn_data *data; + func *parts = *insn; + int part_count = 0, r; + + /* Figure out how many funcs have to be called. */ + while (parts[part_count].func) + ++part_count; + + /* Allocate storage for the output area of each func. */ + data = (insn_data*) malloc (part_count * sizeof (insn_data)); + +#if SIMPLIFY_OUTPUT + randomization_counter = 0; +#else + /* Repeat each insn several times. */ + for (r = 0; r < INSN_REPEAT; ++r) +#endif + { + unsigned saved_rc = randomization_counter; + int part; + word bits = 0; + + for (part = 0; part < part_count; ++part) + { + /* Zero-initialize the storage. */ + data[part].as_in = data[part].dis_out = 0; + data[part].bits = 0; + /* If a func returns non-zero, skip this line. */ + if (parts[part].func (&parts[part].arg, &data[part])) + goto skip; + /* Otherwise, get its output bit pattern into the total + bit pattern. */ + bits |= data[part].bits; + } + + if (as_in) + { + /* Output the whole assembly line. */ + fputc ('\t', as_in); + for (part = 0; part < part_count; ++part) + if (data[part].as_in) + fputs (data[part].as_in, as_in); + fputc ('\n', as_in); + } + + if (dis_out) + { + /* Output the disassembler expected output line, + starting with the offset and the insn binary pattern, + just like objdump outputs. Because objdump sometimes + inserts spaces between each byte in the insn binary + pattern, make the space optional. */ + fprintf (dis_out, "0*%x <", current_offset); + if (last_label_name) + if (current_offset == last_label_offset) + fputs (last_label_name, dis_out); + else + fprintf (dis_out, "%s\\+0x%x", last_label_name, + current_offset - last_label_offset); + else + fputs ("[^>]*", dis_out); + fputs ("> ", dis_out); + for (part = insn_size; part-- > 0; ) + fprintf (dis_out, "%02x ?", (int)(bits >> (part * 8)) & 0xff); + fputs (" *\t", dis_out); + +#if DISASSEMBLER_TEST + for (part = 0; part < part_count; ++part) + if (data[part].dis_out) + fputs (data[part].dis_out, dis_out); +#else + /* If we're not testing the DISASSEMBLER, just match + anything. */ + fputs (".*", dis_out); +#endif + fputc ('\n', dis_out); +#if OUTPUT_RANDOMIZATION_COUNTER + fprintf (dis_out, "# %i\n", randomization_counter); +#endif + } + + /* Account for the insn_size bytes we've just output. */ + current_offset += insn_size; + + /* Release the memory that each func may have allocated. */ + for (; part-- > 0;) + { + skip: + if (data[part].as_in) + free (data[part].as_in); + if (data[part].dis_out + && data[part].dis_out != data[part].as_in) + free (data[part].dis_out); + } + + /* There's nothing random here, don't repeat this insn. */ + if (randomization_counter == saved_rc) + break; + } + + free (data); + } +} + +/* For each group, output an asm label and the insns of the group. */ +void +output_groups (group_t group[], FILE *as_in, FILE *dis_out) +{ + for (; group->name; ++group) + { + fprintf (as_in, "%s:\n", group->name); + fprintf (dis_out, "# %s:\n", group->name); + last_label_offset = current_offset; + last_label_name = group->name; + output_insns (group->insns, as_in, dis_out); + } +} + +#endif diff --git a/gas/testsuite/gas/arm/arm.exp b/gas/testsuite/gas/arm/arm.exp index 2bff85ffecc..152d51580b4 100644 --- a/gas/testsuite/gas/arm/arm.exp +++ b/gas/testsuite/gas/arm/arm.exp @@ -62,6 +62,8 @@ if {[istarget *arm*-*-*] || [istarget "xscale-*-*"]} then { run_dump_test "adrl" + run_dump_test "maverick" + if {[istarget *-*-elf*] || [istarget *-*-linux*]} then { run_dump_test "pic" } @@ -77,6 +79,3 @@ if [istarget arm-*-pe] { #run_dump_test "be-fpconst" } -if [istarget arm9e-*] { - run_dump_test "maverick" -} diff --git a/gas/testsuite/gas/arm/maverick.c b/gas/testsuite/gas/arm/maverick.c index 2744dea46ac..36255974de0 100644 --- a/gas/testsuite/gas/arm/maverick.c +++ b/gas/testsuite/gas/arm/maverick.c @@ -1,42 +1,42 @@ -/* Copyright (C) 2000 Free Software Foundation - * Contributed by Alexandre Oliva - * - * This file 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. - */ +/* Copyright (C) 2000, 2003 Free Software Foundation + Contributed by Alexandre Oliva + + This file 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. */ /* Generator of tests for Maverick. - * - * See the following file for usage and documentation. */ + + See the following file for usage and documentation. */ #include "../all/test-gen.c" /* These are the ARM registers. Some of them have canonical names - * other than r##, so we'll use both in the asm input, but only the - * canonical names in the expected disassembler output. */ -char *arm_regs[] = { - /* Canonical names. */ - "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", - "r8", "r9", "r10", "r11", "r12", "sp", "lr", "pc", - /* Alternate names, i.e., those that can be used in the assembler, - * but that will never be emitted by the disassembler. */ - "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", - "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15" -}; + other than r##, so we'll use both in the asm input, but only the + canonical names in the expected disassembler output. */ +char *arm_regs[] = + { + /* Canonical names. */ + "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", + "r8", "r9", "sl", "fp", "ip", "sp", "lr", "pc", + /* Alternate names, i.e., those that can be used in the assembler, + * but that will never be emitted by the disassembler. */ + "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", + "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15" + }; /* The various types of registers: ARM's registers, Maverick's - * f/d/fx/dx registers, Maverick's accumulators and Maverick's status - * register. */ + f/d/fx/dx registers, Maverick's accumulators and Maverick's + status register. */ #define armreg(shift) \ reg_r (arm_regs, shift, 0xf, mk_get_bits (5u)) #define mvreg(prefix, shift) \ @@ -47,21 +47,23 @@ char *arm_regs[] = { literal ("dspsc"), tick_random /* This outputs the condition flag that may follow each ARM insn. - * Since the condition 15 is invalid, we use it to check that the - * assembler recognizes the absence of a condition as `al'. However, - * the disassembler won't ever output `al', so, if we emit it in the - * assembler, expect the condition to be omitted in the disassembler - * output. */ + Since the condition 15 is invalid, we use it to check that the + assembler recognizes the absence of a condition as `al'. However, + the disassembler won't ever output `al', so, if we emit it in the + assembler, expect the condition to be omitted in the disassembler + output. */ + int -arm_cond (func_arg *arg, insn_data *data) +arm_cond (func_arg * arg, insn_data * data) #define arm_cond { arm_cond } { - static const char conds[16][3] = { - "eq", "ne", "cs", "cc", - "mi", "pl", "vs", "vc", - "hi", "ls", "ge", "lt", - "gt", "le", "al", "" - }; + static const char conds[16][3] = + { + "eq", "ne", "cs", "cc", + "mi", "pl", "vs", "vc", + "hi", "ls", "ge", "lt", + "gt", "le", "al", "" + }; unsigned val = get_bits (4u); data->as_in = data->dis_out = strdup (conds[val]); @@ -72,34 +74,54 @@ arm_cond (func_arg *arg, insn_data *data) } /* The sign of an offset is actually used to determined whether the - * absolute value of the offset should be added or subtracted, so we - * must adjust negative values so that they do not overflow: -256 is - * not valid, but -0 is distinct from +0. */ + absolute value of the offset should be added or subtracted, so we + must adjust negative values so that they do not overflow: -256 is + not valid, but -0 is distinct from +0. */ int -off8s (func_arg *arg, insn_data *data) +off8s (func_arg * arg, insn_data * data) #define off8s { off8s } { - int val = get_bits (9s); - char value[6], *strt = value; - *strt++ = '#'; + int val; + char value[6]; + + /* Values less that -255 or between -3 and 0 are problematical. + The assembler performs translations on the addressing modes + for these values, meaning that we cannot just recreate the + disassembler string in the LDST macro without knowing what + value had been generated in off8s. */ + do + { + val = get_bits (9s); + } + while (val < -255 || (val > -4 && val < 1)); + if (val < 0) { - *strt++ = '-'; - ++val; - val = -val; + val = - val; + val &= ~3; + sprintf (value, ", -#%i", val); + data->dis_out = strdup (value); + sprintf (value, ", #-%i", val); + data->as_in = strdup (value); + val >>= 2; data->bits = val; } else - data->bits = val | (1 << 23); - sprintf (strt, "%i", val); - data->as_in = data->dis_out = strdup (value); + { + val &= ~3; + sprintf (value, ", #%i", val); + data->as_in = data->dis_out = strdup (value); + val >>= 2; + data->bits = val | (1 << 23); + } + return 0; } /* This function generates a 7-bit signed constant, emitted as - * follows: the 4 least-significant bits are stored in the 4 - * least-significant bits of the word; the 3 most-significant bits are - * stored in bits 7:5, i.e., bit 4 is skipped. */ + follows: the 4 least-significant bits are stored in the 4 + least-significant bits of the word; the 3 most-significant bits are + stored in bits 7:5, i.e., bit 4 is skipped. */ int imm7 (func_arg *arg, insn_data *data) #define imm7 { imm7 } @@ -114,15 +136,15 @@ imm7 (func_arg *arg, insn_data *data) } /* Convenience wrapper to define_insn, that prefixes every insn with - * `cf' (so, if you specify command-line arguments, remember that `cf' - * must *not* be part of the string), and post-fixes a condition code. - * insname and insnvar specify the main insn name and a variant; - * they're just concatenated, and insnvar is often empty. word is the - * bit pattern that defines the insn, properly shifted, and funcs is a - * sequence of funcs that define the operands and the syntax of the - * insn. */ + `cf' (so, if you specify command-line arguments, remember that `cf' + must *not* be part of the string), and post-fixes a condition code. + insname and insnvar specify the main insn name and a variant; + they're just concatenated, and insnvar is often empty. word is the + bit pattern that defines the insn, properly shifted, and funcs is a + sequence of funcs that define the operands and the syntax of the + insn. */ #define mv_insn(insname, insnvar, word, funcs...) \ - define_insn(insname ## insnvar, \ + define_insn (insname ## insnvar, \ literal ("cf"), \ insn_bits (insname, word), \ arm_cond, \ @@ -130,39 +152,39 @@ imm7 (func_arg *arg, insn_data *data) ## funcs) /* Define a single LDC/STC variant. op is the main insn opcode; ld - * stands for load (it should be 0 on stores), dword selects 64-bit - * operations, pre should be enabled for pre-increment, and wb, for - * write-back. sep1, sep2 and sep3 are syntactical elements ([]!) - * that the assembler will use to enable pre and wb. It would - * probably have been cleaner to couple the syntactical elements with - * the pre/wb bits directly, but it would have required the definition - * of more functions. */ + stands for load (it should be 0 on stores), dword selects 64-bit + operations, pre should be enabled for pre-increment, and wb, for + write-back. sep1, sep2 and sep3 are syntactical elements ([]!) + that the assembler will use to enable pre and wb. It would + probably have been cleaner to couple the syntactical elements with + the pre/wb bits directly, but it would have required the definition + of more functions. */ #define LDST(insname, insnvar, op, ld, dword, regname, pre, wb, sep1, sep2, sep3) \ mv_insn (insname, insnvar, \ - (12<<24)|(op<<8)|(ld<<20)|(pre<<24)|(dword<<22)|(wb<<21), \ + (12 << 24) | (op << 8) | (ld << 20) | (pre << 24) | (dword << 22) | (wb << 21), \ mvreg (regname, 12), comma, \ - lsqbkt, armreg (16), sep1, comma, off8s, sep2, sep3, \ + lsqbkt, armreg (16), sep1, off8s, sep2, sep3, \ tick_random) /* Define all variants of an LDR or STR instruction, namely, - * pre-indexed without write-back, pre-indexed with write-back and - * post-indexed. */ + pre-indexed without write-back, pre-indexed with write-back and + post-indexed. */ #define LDSTall(insname, op, ld, dword, regname) \ LDST (insname, _p, op, ld, dword, regname, 1, 0, nothing, rsqbkt, nothing); \ - LDST (insname, _pw, op, ld, dword, regname, 1, 1, nothing, rsqbkt, literal("!")); \ - LDST (insname, ,op, ld, dword, regname, 0, 0, rsqbkt, nothing, nothing) + LDST (insname, _pw, op, ld, dword, regname, 1, 1, nothing, rsqbkt, literal ("!")); \ + LDST (insname, ,op, ld, dword, regname, 0, 1, rsqbkt, nothing, nothing) /* Produce the insn identifiers of all LDST variants of a given insn. - * To be used in the initialization of an insn group array. */ + To be used in the initialization of an insn group array. */ #define insns_LDSTall(insname) \ insn (insname ## _p), insn (insname ## _pw), insn (insname) /* Define a CDP variant that uses two registers, at offsets 12 and 16. - * The two opcodes and the co-processor number identify the CDP - * insn. */ + The two opcodes and the co-processor number identify the CDP + insn. */ #define CDP2(insname, var, cpnum, opcode1, opcode2, reg1name, reg2name) \ mv_insn (insname##var, , \ - (14<<24)|((opcode1)<<20)|((cpnum)<<8)|((opcode2)<<5), \ + (14 << 24) | ((opcode1) << 20) | ((cpnum) << 8) | ((opcode2) << 5), \ mvreg (reg1name, 12), comma, mvreg (reg2name, 16)) /* Define a 32-bit integer CDP instruction with two operands. */ @@ -182,15 +204,15 @@ imm7 (func_arg *arg, insn_data *data) CDP2 (insname, d, 4, opcode1, opcode2, "d", "d") /* Define a CDP instruction with two register operands and one 7-bit - * signed immediate generated with imm7. */ + signed immediate generated with imm7. */ #define CDP2_imm7(insname, cpnum, opcode1, reg1name, reg2name) \ - mv_insn (insname, , (14<<24)|((opcode1)<<20)|((cpnum)<<8), \ + mv_insn (insname, , (14 << 24) | ((opcode1) << 20) | ((cpnum) << 8), \ mvreg (reg1name, 12), comma, mvreg (reg2name, 16), comma, imm7, \ tick_random) /* Produce the insn identifiers of CDP floating-point or integer insn - * pairs (i.e., it appends the suffixes for 32-bit and 64-bit - * insns. */ + pairs (i.e., it appends the suffixes for 32-bit and 64-bit + insns. */ #define CDPfp_insns(insname) \ insn (insname ## s), insn (insname ## d) #define CDPx_insns(insname) \ @@ -199,7 +221,7 @@ imm7 (func_arg *arg, insn_data *data) /* Define a CDP instruction with 3 operands, at offsets 12, 16, 0. */ #define CDP3(insname, var, cpnum, opcode1, opcode2, reg1name, reg2name, reg3name) \ mv_insn (insname##var, , \ - (14<<24)|((opcode1)<<20)|((cpnum)<<8)|((opcode2)<<5), \ + (14 << 24) | ((opcode1) << 20) | ((cpnum) << 8) | ((opcode2) << 5), \ mvreg (reg1name, 12), comma, mvreg (reg2name, 16), comma, \ mvreg (reg3name, 0), tick_random) @@ -222,7 +244,7 @@ imm7 (func_arg *arg, insn_data *data) /* Define a CDP instruction with four operands, at offsets 5, 12, 16 * and 0. Used only for ACC instructions. */ #define CDP4(insname, opcode1, reg2spec, reg3name, reg4name) \ - mv_insn (insname, , (14<<24)|((opcode1)<<20)|(6<<8), \ + mv_insn (insname, , (14 << 24) | ((opcode1) << 20) | (6 << 8), \ acreg (5), comma, reg2spec, comma, \ mvreg (reg3name, 16), comma, mvreg (reg4name, 0)) @@ -237,14 +259,14 @@ imm7 (func_arg *arg, insn_data *data) /* Define a MCR or MRC instruction with two register operands. */ #define MCRC2(insname, cpnum, opcode1, dir, opcode2, reg1spec, reg2spec) \ mv_insn (insname, , \ - ((14<<24)|((opcode1)<<21)|((dir)<<20)| \ - ((cpnum)<<8)|((opcode2)<<5)|(1<<4)), \ + ((14 << 24) | ((opcode1) << 21) | ((dir) << 20)| \ + ((cpnum) << 8) | ((opcode2) << 5) | (1 << 4)), \ reg1spec, comma, reg2spec) /* Define a move from a DSP register to an ARM register. */ #define MVDSPARM(insname, cpnum, opcode2, regDSPname) \ MCRC2 (mv ## insname, cpnum, 0, 0, opcode2, \ - mvreg (regDSPname, 16), armreg(12)) + mvreg (regDSPname, 16), armreg (12)) /* Define a move from an ARM register to a DSP register. */ #define MVARMDSP(insname, cpnum, opcode2, regDSPname) \ @@ -260,37 +282,37 @@ imm7 (func_arg *arg, insn_data *data) MCRC2 (mv ## insname, 6, 0, 0, opcode2, mvreg (regDSPname, 0), acreg (16)) /* Define move insns between a float DSP register and an ARM - * register. */ + register. */ #define MVf(nameAD, nameDA, opcode2) \ MVDSPARM (nameAD, 4, opcode2, "f"); \ MVARMDSP (nameDA, 4, opcode2, "f") /* Define move insns between a double DSP register and an ARM - * register. */ + register. */ #define MVd(nameAD, nameDA, opcode2) \ MVDSPARM (nameAD, 4, opcode2, "d"); \ MVARMDSP (nameDA, 4, opcode2, "d") /* Define move insns between a 32-bit integer DSP register and an ARM - * register. */ + register. */ #define MVfx(nameAD, nameDA, opcode2) \ MVDSPARM (nameAD, 5, opcode2, "fx"); \ MVARMDSP (nameDA, 5, opcode2, "fx") /* Define move insns between a 64-bit integer DSP register and an ARM - * register. */ + register. */ #define MVdx(nameAD, nameDA, opcode2) \ MVDSPARM (nameAD, 5, opcode2, "dx"); \ MVARMDSP (nameDA, 5, opcode2, "dx") /* Define move insns between a 32-bit DSP register and a DSP - * accumulator. */ + accumulator. */ #define MVfxa(nameFA, nameAF, opcode2) \ MVDSPACC (nameFA, opcode2, "fx"); \ MVACCDSP (nameAF, opcode2, "fx") /* Define move insns between a 64-bit DSP register and a DSP - * accumulator. */ + accumulator. */ #define MVdxa(nameDA, nameAD, opcode2) \ MVDSPACC (nameDA, opcode2, "dx"); \ MVACCDSP (nameAD, opcode2, "dx") @@ -302,8 +324,8 @@ imm7 (func_arg *arg, insn_data *data) /* Define a MCR or MRC instruction with three register operands. */ #define MCRC3(insname, cpnum, opcode1, dir, opcode2, reg1spec, reg2spec, reg3spec) \ mv_insn (insname, , \ - ((14<<24)|((opcode1)<<21)|((dir)<<20)| \ - ((cpnum)<<8)|((opcode2)<<5)|(1<<4)), \ + ((14 << 24) | ((opcode1) << 21) | ((dir) << 20)| \ + ((cpnum) << 8) | ((opcode2) << 5) | (1 << 4)), \ reg1spec, comma, reg2spec, comma, reg3spec, \ tick_random) @@ -318,13 +340,14 @@ LDSTall (str32, 5, 0, 0, "fx"); LDSTall (str64, 5, 0, 1, "dx"); /* Create the load_store insn group. */ -func *load_store_insns[] = { - insns_LDSTall (ldrs), insns_LDSTall (ldrd), - insns_LDSTall (ldr32), insns_LDSTall (ldr64), - insns_LDSTall (strs), insns_LDSTall (strd), - insns_LDSTall (str32), insns_LDSTall (str64), - 0 -}; +func *load_store_insns[] = + { + insns_LDSTall (ldrs), insns_LDSTall (ldrd), + insns_LDSTall (ldr32), insns_LDSTall (ldr64), + insns_LDSTall (strs), insns_LDSTall (strd), + insns_LDSTall (str32), insns_LDSTall (str64), + 0 + }; /* Define all move insns. */ MVf (sr, rs, 2); @@ -343,14 +366,15 @@ CDP2 (cpys, , 4, 0, 0, "f", "f"); CDP2 (cpyd, , 4, 0, 1, "d", "d"); /* Create the move insns group. */ -func *move_insns[] = { - insns_MV (sr, rs), insns_MV (dlr, rdl), insns_MV (dhr, rdh), - insns_MV (64lr, r64l), insns_MV (64hr, r64h), - insns_MV (al32, 32al), insns_MV (am32, 32am), insns_MV (ah32, 32ah), - insns_MV (a32, 32a), insns_MV (a64, 64a), - insn (mvsc32), insn (mv32sc), insn (cpys), insn (cpyd), - 0 -}; +func * move_insns[] = + { + insns_MV (sr, rs), insns_MV (dlr, rdl), insns_MV (dhr, rdh), + insns_MV (64lr, r64l), insns_MV (64hr, r64h), + insns_MV (al32, 32al), insns_MV (am32, 32am), insns_MV (ah32, 32ah), + insns_MV (a32, 32a), insns_MV (a64, 64a), + insn (mvsc32), insn (mv32sc), insn (cpys), insn (cpyd), + 0 + }; /* Define all conversion insns. */ CDP2 (cvtsd, , 4, 0, 3, "d", "f"); @@ -365,25 +389,27 @@ CDP2 (truncs32, , 5, 1, 6, "fx", "f"); CDP2 (truncd32, , 5, 1, 7, "fx", "d"); /* Create the conv insns group. */ -func *conv_insns[] = { - insn (cvtsd), insn (cvtds), insn (cvt32s), insn (cvt32d), - insn (cvt64s), insn (cvt64d), insn (cvts32), insn (cvtd32), - insn (truncs32), insn (truncd32), - 0 -}; +func * conv_insns[] = + { + insn (cvtsd), insn (cvtds), insn (cvt32s), insn (cvt32d), + insn (cvt64s), insn (cvt64d), insn (cvts32), insn (cvtd32), + insn (truncs32), insn (truncd32), + 0 + }; /* Define all shift insns. */ -MCRC3 (rshl32, 5, 0, 0, 2, mvreg ("fx", 16), mvreg ("fx", 0), armreg(12)); -MCRC3 (rshl64, 5, 0, 0, 3, mvreg ("dx", 16), mvreg ("dx", 0), armreg(12)); +MCRC3 (rshl32, 5, 0, 0, 2, mvreg ("fx", 16), mvreg ("fx", 0), armreg (12)); +MCRC3 (rshl64, 5, 0, 0, 3, mvreg ("dx", 16), mvreg ("dx", 0), armreg (12)); CDP2_imm7 (sh32, 5, 0, "fx", "fx"); CDP2_imm7 (sh64, 5, 2, "dx", "dx"); /* Create the shift insns group. */ -func *shift_insns[] = { - insn (rshl32), insn (rshl64), - insn (sh32), insn (sh64), - 0 -}; +func *shift_insns[] = + { + insn (rshl32), insn (rshl64), + insn (sh32), insn (sh64), + 0 + }; /* Define all comparison insns. */ MCRC3 (cmps, 4, 0, 1, 4, armreg (12), mvreg ("f", 16), mvreg ("f", 0)); @@ -392,11 +418,12 @@ MCRC3 (cmp32, 5, 0, 1, 4, armreg (12), mvreg ("fx", 16), mvreg ("fx", 0)); MCRC3 (cmp64, 5, 0, 1, 5, armreg (12), mvreg ("dx", 16), mvreg ("dx", 0)); /* Create the comp insns group. */ -func *comp_insns[] = { - insn (cmps), insn (cmpd), - insn (cmp32), insn (cmp64), - 0 -}; +func *comp_insns[] = + { + insn (cmps), insn (cmpd), + insn (cmp32), insn (cmp64), + 0 + }; /* Define all floating-point arithmetic insns. */ CDP2f (abs, 3, 0); @@ -411,11 +438,12 @@ CDP3f (mul, 1, 0); CDP3d (mul, 1, 1); /* Create the fp-arith insns group. */ -func *fp_arith_insns[] = { - CDPfp_insns (abs), CDPfp_insns (neg), - CDPfp_insns (add), CDPfp_insns (sub), CDPfp_insns (mul), - 0 -}; +func *fp_arith_insns[] = + { + CDPfp_insns (abs), CDPfp_insns (neg), + CDPfp_insns (add), CDPfp_insns (sub), CDPfp_insns (mul), + 0 + }; /* Define all integer arithmetic insns. */ CDP2fx (abs, 3, 0); @@ -432,12 +460,13 @@ CDP3fx (mac, 1, 2); CDP3fx (msc, 1, 3); /* Create the int-arith insns group. */ -func *int_arith_insns[] = { - CDPx_insns (abs), CDPx_insns (neg), - CDPx_insns (add), CDPx_insns (sub), CDPx_insns (mul), - insn (mac32), insn (msc32), - 0 -}; +func * int_arith_insns[] = + { + CDPx_insns (abs), CDPx_insns (neg), + CDPx_insns (add), CDPx_insns (sub), CDPx_insns (mul), + insn (mac32), insn (msc32), + 0 + }; /* Define all accumulator arithmetic insns. */ CDP41A (madd32, 0); @@ -446,28 +475,29 @@ CDP42A (madda32, 2); CDP42A (msuba32, 3); /* Create the acc-arith insns group. */ -func *acc_arith_insns[] = { - insn (madd32), insn (msub32), - insn (madda32), insn (msuba32), - 0 -}; +func * acc_arith_insns[] = + { + insn (madd32), insn (msub32), + insn (madda32), insn (msuba32), + 0 + }; /* Create the set of all groups. */ -group_t -groups[] = { - { "load_store", load_store_insns }, - { "move", move_insns }, - { "conv", conv_insns }, - { "shift", shift_insns }, - { "comp", comp_insns }, - { "fp_arith", fp_arith_insns }, - { "int_arith", int_arith_insns }, - { "acc_arith", acc_arith_insns }, - { 0 } -}; +group_t groups[] = + { + { "load_store", load_store_insns }, + { "move", move_insns }, + { "conv", conv_insns }, + { "shift", shift_insns }, + { "comp", comp_insns }, + { "fp_arith", fp_arith_insns }, + { "int_arith", int_arith_insns }, + { "acc_arith", acc_arith_insns }, + { 0 } + }; int -main(int argc, char *argv[]) +main (int argc, char *argv[]) { FILE *as_in = stdout, *dis_out = stderr; @@ -480,12 +510,12 @@ main(int argc, char *argv[]) "\t.align\n", as_in); /* Output comments for the testsuite-driver and the initial - * disassembler output. */ + disassembler output. */ fputs ("#objdump: -dr --prefix-address --show-raw-insn\n" "#name: Maverick\n" - "#as: -marm9e\n" + "#as: -mcpu=ep9312\n" "\n" - "# Test the instructions of Maverick\n" + "# Test the instructions of the Cirrus Maverick floating point co-processor\n" "\n" ".*: +file format.*arm.*\n" "\n" diff --git a/gas/testsuite/gas/arm/maverick.d b/gas/testsuite/gas/arm/maverick.d index 6488ec56b73..c9a99cd8f41 100644 --- a/gas/testsuite/gas/arm/maverick.d +++ b/gas/testsuite/gas/arm/maverick.d @@ -1,477 +1,477 @@ #objdump: -dr --prefix-address --show-raw-insn #name: Maverick -#as: -mcpu=arm9+maverick +#as: -mcpu=ep9312 -# Test the instructions of Maverick +# Test the instructions of the Cirrus Maverick floating point co-processor .*: +file format.*arm.* Disassembly of section .text: # load_store: -00000000 0d ?9d ?54 ?ff ? * cfldrseq mvf5, ?\[sp, ?#255\] -00000004 4d ?9b ?e4 ?49 ? * cfldrsmi mvf14, ?\[r11, ?#73\] -00000008 7d ?1c ?24 ?ef ? * cfldrsvc mvf2, ?\[r12, ?#-239\] -0000000c bd ?1a ?04 ?ff ? * cfldrslt mvf0, ?\[r10, ?#-255\] -00000010 3d ?11 ?c4 ?27 ? * cfldrscc mvf12, ?\[r1, ?#-39\] -00000014 ed ?bf ?d4 ?68 ? * cfldrs mvf13, ?\[pc, ?#104\]! -00000018 2d ?30 ?94 ?00 ? * cfldrscs mvf9, ?\[r0, ?#-0\]! -0000001c ad ?be ?94 ?48 ? * cfldrsge mvf9, ?\[lr, ?#72\]! -00000020 8d ?b5 ?d4 ?25 ? * cfldrshi mvf13, ?\[r5, ?#37\]! -00000024 cd ?b3 ?64 ?00 ? * cfldrsgt mvf6, ?\[r3, ?#0\]! -00000028 5c ?94 ?e4 ?40 ? * cfldrspl mvf14, ?\[r4\], ?#64 -0000002c 1c ?12 ?84 ?9d ? * cfldrsne mvf8, ?\[r2\], ?#-157 -00000030 bc ?99 ?44 ?01 ? * cfldrslt mvf4, ?\[r9\], ?#1 -00000034 5c ?17 ?f4 ?3f ? * cfldrspl mvf15, ?\[r7\], ?#-63 -00000038 ec ?18 ?34 ?88 ? * cfldrs mvf3, ?\[r8\], ?#-136 -0000003c 2d ?56 ?14 ?44 ? * cfldrdcs mvd1, ?\[r6, ?#-68\] -00000040 0d ?dd ?74 ?ff ? * cfldrdeq mvd7, ?\[sp, ?#255\] -00000044 cd ?db ?a4 ?49 ? * cfldrdgt mvd10, ?\[r11, ?#73\] -00000048 dd ?5c ?64 ?ef ? * cfldrdle mvd6, ?\[r12, ?#-239\] -0000004c 9d ?5a ?04 ?ff ? * cfldrdls mvd0, ?\[r10, ?#-255\] -00000050 9d ?71 ?44 ?27 ? * cfldrdls mvd4, ?\[r1, ?#-39\]! -00000054 dd ?ff ?74 ?68 ? * cfldrdle mvd7, ?\[pc, ?#104\]! -00000058 6d ?70 ?b4 ?00 ? * cfldrdvs mvd11, ?\[r0, ?#-0\]! -0000005c ed ?fe ?34 ?48 ? * cfldrd mvd3, ?\[lr, ?#72\]! -00000060 8d ?f5 ?f4 ?25 ? * cfldrdhi mvd15, ?\[r5, ?#37\]! -00000064 4c ?d3 ?24 ?00 ? * cfldrdmi mvd2, ?\[r3\], ?#0 -00000068 ec ?d4 ?a4 ?40 ? * cfldrd mvd10, ?\[r4\], ?#64 -0000006c 3c ?52 ?84 ?9d ? * cfldrdcc mvd8, ?\[r2\], ?#-157 -00000070 1c ?d9 ?c4 ?01 ? * cfldrdne mvd12, ?\[r9\], ?#1 -00000074 7c ?57 ?54 ?3f ? * cfldrdvc mvd5, ?\[r7\], ?#-63 -00000078 ad ?18 ?15 ?88 ? * cfldr32ge mvfx1, ?\[r8, ?#-136\] -0000007c 6d ?16 ?b5 ?44 ? * cfldr32vs mvfx11, ?\[r6, ?#-68\] -00000080 0d ?9d ?55 ?ff ? * cfldr32eq mvfx5, ?\[sp, ?#255\] -00000084 4d ?9b ?e5 ?49 ? * cfldr32mi mvfx14, ?\[r11, ?#73\] -00000088 7d ?1c ?25 ?ef ? * cfldr32vc mvfx2, ?\[r12, ?#-239\] -0000008c bd ?3a ?05 ?ff ? * cfldr32lt mvfx0, ?\[r10, ?#-255\]! -00000090 3d ?31 ?c5 ?27 ? * cfldr32cc mvfx12, ?\[r1, ?#-39\]! -00000094 ed ?bf ?d5 ?68 ? * cfldr32 mvfx13, ?\[pc, ?#104\]! -00000098 2d ?30 ?95 ?00 ? * cfldr32cs mvfx9, ?\[r0, ?#-0\]! -0000009c ad ?be ?95 ?48 ? * cfldr32ge mvfx9, ?\[lr, ?#72\]! -000000a0 8c ?95 ?d5 ?25 ? * cfldr32hi mvfx13, ?\[r5\], ?#37 -000000a4 cc ?93 ?65 ?00 ? * cfldr32gt mvfx6, ?\[r3\], ?#0 -000000a8 5c ?94 ?e5 ?40 ? * cfldr32pl mvfx14, ?\[r4\], ?#64 -000000ac 1c ?12 ?85 ?9d ? * cfldr32ne mvfx8, ?\[r2\], ?#-157 -000000b0 bc ?99 ?45 ?01 ? * cfldr32lt mvfx4, ?\[r9\], ?#1 -000000b4 5d ?57 ?f5 ?3f ? * cfldr64pl mvdx15, ?\[r7, ?#-63\] -000000b8 ed ?58 ?35 ?88 ? * cfldr64 mvdx3, ?\[r8, ?#-136\] -000000bc 2d ?56 ?15 ?44 ? * cfldr64cs mvdx1, ?\[r6, ?#-68\] -000000c0 0d ?dd ?75 ?ff ? * cfldr64eq mvdx7, ?\[sp, ?#255\] -000000c4 cd ?db ?a5 ?49 ? * cfldr64gt mvdx10, ?\[r11, ?#73\] -000000c8 dd ?7c ?65 ?ef ? * cfldr64le mvdx6, ?\[r12, ?#-239\]! -000000cc 9d ?7a ?05 ?ff ? * cfldr64ls mvdx0, ?\[r10, ?#-255\]! -000000d0 9d ?71 ?45 ?27 ? * cfldr64ls mvdx4, ?\[r1, ?#-39\]! -000000d4 dd ?ff ?75 ?68 ? * cfldr64le mvdx7, ?\[pc, ?#104\]! -000000d8 6d ?70 ?b5 ?00 ? * cfldr64vs mvdx11, ?\[r0, ?#-0\]! -000000dc ec ?de ?35 ?48 ? * cfldr64 mvdx3, ?\[lr\], ?#72 -000000e0 8c ?d5 ?f5 ?25 ? * cfldr64hi mvdx15, ?\[r5\], ?#37 -000000e4 4c ?d3 ?25 ?00 ? * cfldr64mi mvdx2, ?\[r3\], ?#0 -000000e8 ec ?d4 ?a5 ?40 ? * cfldr64 mvdx10, ?\[r4\], ?#64 -000000ec 3c ?52 ?85 ?9d ? * cfldr64cc mvdx8, ?\[r2\], ?#-157 -000000f0 1d ?89 ?c4 ?01 ? * cfstrsne mvf12, ?\[r9, ?#1\] -000000f4 7d ?07 ?54 ?3f ? * cfstrsvc mvf5, ?\[r7, ?#-63\] -000000f8 ad ?08 ?14 ?88 ? * cfstrsge mvf1, ?\[r8, ?#-136\] -000000fc 6d ?06 ?b4 ?44 ? * cfstrsvs mvf11, ?\[r6, ?#-68\] -00000100 0d ?8d ?54 ?ff ? * cfstrseq mvf5, ?\[sp, ?#255\] -00000104 4d ?ab ?e4 ?49 ? * cfstrsmi mvf14, ?\[r11, ?#73\]! -00000108 7d ?2c ?24 ?ef ? * cfstrsvc mvf2, ?\[r12, ?#-239\]! -0000010c bd ?2a ?04 ?ff ? * cfstrslt mvf0, ?\[r10, ?#-255\]! -00000110 3d ?21 ?c4 ?27 ? * cfstrscc mvf12, ?\[r1, ?#-39\]! -00000114 ed ?af ?d4 ?68 ? * cfstrs mvf13, ?\[pc, ?#104\]! -00000118 2c ?00 ?94 ?00 ? * cfstrscs mvf9, ?\[r0\], ?#-0 -0000011c ac ?8e ?94 ?48 ? * cfstrsge mvf9, ?\[lr\], ?#72 -00000120 8c ?85 ?d4 ?25 ? * cfstrshi mvf13, ?\[r5\], ?#37 -00000124 cc ?83 ?64 ?00 ? * cfstrsgt mvf6, ?\[r3\], ?#0 -00000128 5c ?84 ?e4 ?40 ? * cfstrspl mvf14, ?\[r4\], ?#64 -0000012c 1d ?42 ?84 ?9d ? * cfstrdne mvd8, ?\[r2, ?#-157\] -00000130 bd ?c9 ?44 ?01 ? * cfstrdlt mvd4, ?\[r9, ?#1\] -00000134 5d ?47 ?f4 ?3f ? * cfstrdpl mvd15, ?\[r7, ?#-63\] -00000138 ed ?48 ?34 ?88 ? * cfstrd mvd3, ?\[r8, ?#-136\] -0000013c 2d ?46 ?14 ?44 ? * cfstrdcs mvd1, ?\[r6, ?#-68\] -00000140 0d ?ed ?74 ?ff ? * cfstrdeq mvd7, ?\[sp, ?#255\]! -00000144 cd ?eb ?a4 ?49 ? * cfstrdgt mvd10, ?\[r11, ?#73\]! -00000148 dd ?6c ?64 ?ef ? * cfstrdle mvd6, ?\[r12, ?#-239\]! -0000014c 9d ?6a ?04 ?ff ? * cfstrdls mvd0, ?\[r10, ?#-255\]! -00000150 9d ?61 ?44 ?27 ? * cfstrdls mvd4, ?\[r1, ?#-39\]! -00000154 dc ?cf ?74 ?68 ? * cfstrdle mvd7, ?\[pc\], ?#104 -00000158 6c ?40 ?b4 ?00 ? * cfstrdvs mvd11, ?\[r0\], ?#-0 -0000015c ec ?ce ?34 ?48 ? * cfstrd mvd3, ?\[lr\], ?#72 -00000160 8c ?c5 ?f4 ?25 ? * cfstrdhi mvd15, ?\[r5\], ?#37 -00000164 4c ?c3 ?24 ?00 ? * cfstrdmi mvd2, ?\[r3\], ?#0 -00000168 ed ?84 ?a5 ?40 ? * cfstr32 mvfx10, ?\[r4, ?#64\] -0000016c 3d ?02 ?85 ?9d ? * cfstr32cc mvfx8, ?\[r2, ?#-157\] -00000170 1d ?89 ?c5 ?01 ? * cfstr32ne mvfx12, ?\[r9, ?#1\] -00000174 7d ?07 ?55 ?3f ? * cfstr32vc mvfx5, ?\[r7, ?#-63\] -00000178 ad ?08 ?15 ?88 ? * cfstr32ge mvfx1, ?\[r8, ?#-136\] -0000017c 6d ?26 ?b5 ?44 ? * cfstr32vs mvfx11, ?\[r6, ?#-68\]! -00000180 0d ?ad ?55 ?ff ? * cfstr32eq mvfx5, ?\[sp, ?#255\]! -00000184 4d ?ab ?e5 ?49 ? * cfstr32mi mvfx14, ?\[r11, ?#73\]! -00000188 7d ?2c ?25 ?ef ? * cfstr32vc mvfx2, ?\[r12, ?#-239\]! -0000018c bd ?2a ?05 ?ff ? * cfstr32lt mvfx0, ?\[r10, ?#-255\]! -00000190 3c ?01 ?c5 ?27 ? * cfstr32cc mvfx12, ?\[r1\], ?#-39 -00000194 ec ?8f ?d5 ?68 ? * cfstr32 mvfx13, ?\[pc\], ?#104 -00000198 2c ?00 ?95 ?00 ? * cfstr32cs mvfx9, ?\[r0\], ?#-0 -0000019c ac ?8e ?95 ?48 ? * cfstr32ge mvfx9, ?\[lr\], ?#72 -000001a0 8c ?85 ?d5 ?25 ? * cfstr32hi mvfx13, ?\[r5\], ?#37 -000001a4 cd ?c3 ?65 ?00 ? * cfstr64gt mvdx6, ?\[r3, ?#0\] -000001a8 5d ?c4 ?e5 ?40 ? * cfstr64pl mvdx14, ?\[r4, ?#64\] -000001ac 1d ?42 ?85 ?9d ? * cfstr64ne mvdx8, ?\[r2, ?#-157\] -000001b0 bd ?c9 ?45 ?01 ? * cfstr64lt mvdx4, ?\[r9, ?#1\] -000001b4 5d ?47 ?f5 ?3f ? * cfstr64pl mvdx15, ?\[r7, ?#-63\] -000001b8 ed ?68 ?35 ?88 ? * cfstr64 mvdx3, ?\[r8, ?#-136\]! -000001bc 2d ?66 ?15 ?44 ? * cfstr64cs mvdx1, ?\[r6, ?#-68\]! -000001c0 0d ?ed ?75 ?ff ? * cfstr64eq mvdx7, ?\[sp, ?#255\]! -000001c4 cd ?eb ?a5 ?49 ? * cfstr64gt mvdx10, ?\[r11, ?#73\]! -000001c8 dd ?6c ?65 ?ef ? * cfstr64le mvdx6, ?\[r12, ?#-239\]! -000001cc 9c ?4a ?05 ?ff ? * cfstr64ls mvdx0, ?\[r10\], ?#-255 -000001d0 9c ?41 ?45 ?27 ? * cfstr64ls mvdx4, ?\[r1\], ?#-39 -000001d4 dc ?cf ?75 ?68 ? * cfstr64le mvdx7, ?\[pc\], ?#104 -000001d8 6c ?40 ?b5 ?00 ? * cfstr64vs mvdx11, ?\[r0\], ?#-0 -000001dc ec ?ce ?35 ?48 ? * cfstr64 mvdx3, ?\[lr\], ?#72 +0*0 0d ?9d ?54 ?3f ? * cfldrseq mvf5, ?\[sp, #252\] +0*4 4d ?9b ?e4 ?12 ? * cfldrsmi mvf14, ?\[fp, #72\] +0*8 7d ?1c ?24 ?3c ? * cfldrsvc mvf2, ?\[ip, -#240\] +0*c bd ?9a ?04 ?3f ? * cfldrslt mvf0, ?\[sl, #252\] +0*10 cd ?9b ?a4 ?12 ? * cfldrsgt mvf10, ?\[fp, #72\] +0*14 dd ?3c ?64 ?3c ? * cfldrsle mvf6, ?\[ip, -#240\]! +0*18 9d ?ba ?04 ?3f ? * cfldrsls mvf0, ?\[sl, #252\]! +0*1c 4d ?bb ?e4 ?12 ? * cfldrsmi mvf14, ?\[fp, #72\]! +0*20 7d ?3c ?24 ?3c ? * cfldrsvc mvf2, ?\[ip, -#240\]! +0*24 bd ?ba ?04 ?3f ? * cfldrslt mvf0, ?\[sl, #252\]! +0*28 cc ?bb ?a4 ?12 ? * cfldrsgt mvf10, ?\[fp\], #72 +0*2c dc ?3c ?64 ?3c ? * cfldrsle mvf6, ?\[ip\], -#240 +0*30 9c ?ba ?04 ?3f ? * cfldrsls mvf0, ?\[sl\], #252 +0*34 4c ?bb ?e4 ?12 ? * cfldrsmi mvf14, ?\[fp\], #72 +0*38 7c ?3c ?24 ?3c ? * cfldrsvc mvf2, ?\[ip\], -#240 +0*3c bd ?da ?04 ?3f ? * cfldrdlt mvd0, ?\[sl, #252\] +0*40 cd ?db ?a4 ?12 ? * cfldrdgt mvd10, ?\[fp, #72\] +0*44 dd ?5c ?64 ?3c ? * cfldrdle mvd6, ?\[ip, -#240\] +0*48 9d ?da ?04 ?3f ? * cfldrdls mvd0, ?\[sl, #252\] +0*4c 4d ?db ?e4 ?12 ? * cfldrdmi mvd14, ?\[fp, #72\] +0*50 7d ?7c ?24 ?3c ? * cfldrdvc mvd2, ?\[ip, -#240\]! +0*54 bd ?fa ?04 ?3f ? * cfldrdlt mvd0, ?\[sl, #252\]! +0*58 cd ?fb ?a4 ?12 ? * cfldrdgt mvd10, ?\[fp, #72\]! +0*5c dd ?7c ?64 ?3c ? * cfldrdle mvd6, ?\[ip, -#240\]! +0*60 9d ?fa ?04 ?3f ? * cfldrdls mvd0, ?\[sl, #252\]! +0*64 4c ?fb ?e4 ?12 ? * cfldrdmi mvd14, ?\[fp\], #72 +0*68 7c ?7c ?24 ?3c ? * cfldrdvc mvd2, ?\[ip\], -#240 +0*6c bc ?fa ?04 ?3f ? * cfldrdlt mvd0, ?\[sl\], #252 +0*70 cc ?fb ?a4 ?12 ? * cfldrdgt mvd10, ?\[fp\], #72 +0*74 dc ?7c ?64 ?3c ? * cfldrdle mvd6, ?\[ip\], -#240 +0*78 9d ?9a ?05 ?3f ? * cfldr32ls mvfx0, ?\[sl, #252\] +0*7c 4d ?9b ?e5 ?12 ? * cfldr32mi mvfx14, ?\[fp, #72\] +0*80 7d ?1c ?25 ?3c ? * cfldr32vc mvfx2, ?\[ip, -#240\] +0*84 bd ?9a ?05 ?3f ? * cfldr32lt mvfx0, ?\[sl, #252\] +0*88 cd ?9b ?a5 ?12 ? * cfldr32gt mvfx10, ?\[fp, #72\] +0*8c dd ?3c ?65 ?3c ? * cfldr32le mvfx6, ?\[ip, -#240\]! +0*90 9d ?ba ?05 ?3f ? * cfldr32ls mvfx0, ?\[sl, #252\]! +0*94 4d ?bb ?e5 ?12 ? * cfldr32mi mvfx14, ?\[fp, #72\]! +0*98 7d ?3c ?25 ?3c ? * cfldr32vc mvfx2, ?\[ip, -#240\]! +0*9c bd ?ba ?05 ?3f ? * cfldr32lt mvfx0, ?\[sl, #252\]! +0*a0 cc ?bb ?a5 ?12 ? * cfldr32gt mvfx10, ?\[fp\], #72 +0*a4 dc ?3c ?65 ?3c ? * cfldr32le mvfx6, ?\[ip\], -#240 +0*a8 9c ?ba ?05 ?3f ? * cfldr32ls mvfx0, ?\[sl\], #252 +0*ac 4c ?bb ?e5 ?12 ? * cfldr32mi mvfx14, ?\[fp\], #72 +0*b0 7c ?3c ?25 ?3c ? * cfldr32vc mvfx2, ?\[ip\], -#240 +0*b4 bd ?da ?05 ?3f ? * cfldr64lt mvdx0, ?\[sl, #252\] +0*b8 cd ?db ?a5 ?12 ? * cfldr64gt mvdx10, ?\[fp, #72\] +0*bc dd ?5c ?65 ?3c ? * cfldr64le mvdx6, ?\[ip, -#240\] +0*c0 9d ?da ?05 ?3f ? * cfldr64ls mvdx0, ?\[sl, #252\] +0*c4 4d ?db ?e5 ?12 ? * cfldr64mi mvdx14, ?\[fp, #72\] +0*c8 7d ?7c ?25 ?3c ? * cfldr64vc mvdx2, ?\[ip, -#240\]! +0*cc bd ?fa ?05 ?3f ? * cfldr64lt mvdx0, ?\[sl, #252\]! +0*d0 cd ?fb ?a5 ?12 ? * cfldr64gt mvdx10, ?\[fp, #72\]! +0*d4 dd ?7c ?65 ?3c ? * cfldr64le mvdx6, ?\[ip, -#240\]! +0*d8 9d ?fa ?05 ?3f ? * cfldr64ls mvdx0, ?\[sl, #252\]! +0*dc 4c ?fb ?e5 ?12 ? * cfldr64mi mvdx14, ?\[fp\], #72 +0*e0 7c ?7c ?25 ?3c ? * cfldr64vc mvdx2, ?\[ip\], -#240 +0*e4 bc ?fa ?05 ?3f ? * cfldr64lt mvdx0, ?\[sl\], #252 +0*e8 cc ?fb ?a5 ?12 ? * cfldr64gt mvdx10, ?\[fp\], #72 +0*ec dc ?7c ?65 ?3c ? * cfldr64le mvdx6, ?\[ip\], -#240 +0*f0 9d ?8a ?04 ?3f ? * cfstrsls mvf0, ?\[sl, #252\] +0*f4 4d ?8b ?e4 ?12 ? * cfstrsmi mvf14, ?\[fp, #72\] +0*f8 7d ?0c ?24 ?3c ? * cfstrsvc mvf2, ?\[ip, -#240\] +0*fc bd ?8a ?04 ?3f ? * cfstrslt mvf0, ?\[sl, #252\] +0*100 cd ?8b ?a4 ?12 ? * cfstrsgt mvf10, ?\[fp, #72\] +0*104 dd ?2c ?64 ?3c ? * cfstrsle mvf6, ?\[ip, -#240\]! +0*108 9d ?aa ?04 ?3f ? * cfstrsls mvf0, ?\[sl, #252\]! +0*10c 4d ?ab ?e4 ?12 ? * cfstrsmi mvf14, ?\[fp, #72\]! +0*110 7d ?2c ?24 ?3c ? * cfstrsvc mvf2, ?\[ip, -#240\]! +0*114 bd ?aa ?04 ?3f ? * cfstrslt mvf0, ?\[sl, #252\]! +0*118 cc ?ab ?a4 ?12 ? * cfstrsgt mvf10, ?\[fp\], #72 +0*11c dc ?2c ?64 ?3c ? * cfstrsle mvf6, ?\[ip\], -#240 +0*120 9c ?aa ?04 ?3f ? * cfstrsls mvf0, ?\[sl\], #252 +0*124 4c ?ab ?e4 ?12 ? * cfstrsmi mvf14, ?\[fp\], #72 +0*128 7c ?2c ?24 ?3c ? * cfstrsvc mvf2, ?\[ip\], -#240 +0*12c bd ?ca ?04 ?3f ? * cfstrdlt mvd0, ?\[sl, #252\] +0*130 cd ?cb ?a4 ?12 ? * cfstrdgt mvd10, ?\[fp, #72\] +0*134 dd ?4c ?64 ?3c ? * cfstrdle mvd6, ?\[ip, -#240\] +0*138 9d ?ca ?04 ?3f ? * cfstrdls mvd0, ?\[sl, #252\] +0*13c 4d ?cb ?e4 ?12 ? * cfstrdmi mvd14, ?\[fp, #72\] +0*140 7d ?6c ?24 ?3c ? * cfstrdvc mvd2, ?\[ip, -#240\]! +0*144 bd ?ea ?04 ?3f ? * cfstrdlt mvd0, ?\[sl, #252\]! +0*148 cd ?eb ?a4 ?12 ? * cfstrdgt mvd10, ?\[fp, #72\]! +0*14c dd ?6c ?64 ?3c ? * cfstrdle mvd6, ?\[ip, -#240\]! +0*150 9d ?ea ?04 ?3f ? * cfstrdls mvd0, ?\[sl, #252\]! +0*154 4c ?eb ?e4 ?12 ? * cfstrdmi mvd14, ?\[fp\], #72 +0*158 7c ?6c ?24 ?3c ? * cfstrdvc mvd2, ?\[ip\], -#240 +0*15c bc ?ea ?04 ?3f ? * cfstrdlt mvd0, ?\[sl\], #252 +0*160 cc ?eb ?a4 ?12 ? * cfstrdgt mvd10, ?\[fp\], #72 +0*164 dc ?6c ?64 ?3c ? * cfstrdle mvd6, ?\[ip\], -#240 +0*168 9d ?8a ?05 ?3f ? * cfstr32ls mvfx0, ?\[sl, #252\] +0*16c 4d ?8b ?e5 ?12 ? * cfstr32mi mvfx14, ?\[fp, #72\] +0*170 7d ?0c ?25 ?3c ? * cfstr32vc mvfx2, ?\[ip, -#240\] +0*174 bd ?8a ?05 ?3f ? * cfstr32lt mvfx0, ?\[sl, #252\] +0*178 cd ?8b ?a5 ?12 ? * cfstr32gt mvfx10, ?\[fp, #72\] +0*17c dd ?2c ?65 ?3c ? * cfstr32le mvfx6, ?\[ip, -#240\]! +0*180 9d ?aa ?05 ?3f ? * cfstr32ls mvfx0, ?\[sl, #252\]! +0*184 4d ?ab ?e5 ?12 ? * cfstr32mi mvfx14, ?\[fp, #72\]! +0*188 7d ?2c ?25 ?3c ? * cfstr32vc mvfx2, ?\[ip, -#240\]! +0*18c bd ?aa ?05 ?3f ? * cfstr32lt mvfx0, ?\[sl, #252\]! +0*190 cc ?ab ?a5 ?12 ? * cfstr32gt mvfx10, ?\[fp\], #72 +0*194 dc ?2c ?65 ?3c ? * cfstr32le mvfx6, ?\[ip\], -#240 +0*198 9c ?aa ?05 ?3f ? * cfstr32ls mvfx0, ?\[sl\], #252 +0*19c 4c ?ab ?e5 ?12 ? * cfstr32mi mvfx14, ?\[fp\], #72 +0*1a0 7c ?2c ?25 ?3c ? * cfstr32vc mvfx2, ?\[ip\], -#240 +0*1a4 bd ?ca ?05 ?3f ? * cfstr64lt mvdx0, ?\[sl, #252\] +0*1a8 cd ?cb ?a5 ?12 ? * cfstr64gt mvdx10, ?\[fp, #72\] +0*1ac dd ?4c ?65 ?3c ? * cfstr64le mvdx6, ?\[ip, -#240\] +0*1b0 9d ?ca ?05 ?3f ? * cfstr64ls mvdx0, ?\[sl, #252\] +0*1b4 4d ?cb ?e5 ?12 ? * cfstr64mi mvdx14, ?\[fp, #72\] +0*1b8 7d ?6c ?25 ?3c ? * cfstr64vc mvdx2, ?\[ip, -#240\]! +0*1bc bd ?ea ?05 ?3f ? * cfstr64lt mvdx0, ?\[sl, #252\]! +0*1c0 cd ?eb ?a5 ?12 ? * cfstr64gt mvdx10, ?\[fp, #72\]! +0*1c4 dd ?6c ?65 ?3c ? * cfstr64le mvdx6, ?\[ip, -#240\]! +0*1c8 9d ?ea ?05 ?3f ? * cfstr64ls mvdx0, ?\[sl, #252\]! +0*1cc 4c ?eb ?e5 ?12 ? * cfstr64mi mvdx14, ?\[fp\], #72 +0*1d0 7c ?6c ?25 ?3c ? * cfstr64vc mvdx2, ?\[ip\], -#240 +0*1d4 bc ?ea ?05 ?3f ? * cfstr64lt mvdx0, ?\[sl\], #252 +0*1d8 cc ?eb ?a5 ?12 ? * cfstr64gt mvdx10, ?\[fp\], #72 +0*1dc dc ?6c ?65 ?3c ? * cfstr64le mvdx6, ?\[ip\], -#240 # move: -000001e0 8e ?0f ?54 ?50 ? * cfmvsrhi mvf15, ?r5 -000001e4 6e ?0b ?64 ?50 ? * cfmvsrvs mvf11, ?r6 -000001e8 2e ?09 ?04 ?50 ? * cfmvsrcs mvf9, ?r0 -000001ec 5e ?0f ?74 ?50 ? * cfmvsrpl mvf15, ?r7 -000001f0 9e ?04 ?14 ?50 ? * cfmvsrls mvf4, ?r1 -000001f4 3e ?1d ?84 ?50 ? * cfmvrscc r8, ?mvf13 -000001f8 7e ?11 ?f4 ?50 ? * cfmvrsvc pc, ?mvf1 -000001fc ce ?1b ?94 ?50 ? * cfmvrsgt r9, ?mvf11 -00000200 0e ?15 ?a4 ?50 ? * cfmvrseq r10, ?mvf5 -00000204 ee ?1c ?44 ?50 ? * cfmvrs r4, ?mvf12 -00000208 ae ?01 ?84 ?10 ? * cfmvdlrge mvd1, ?r8 -0000020c ee ?0d ?f4 ?10 ? * cfmvdlr mvd13, ?pc -00000210 be ?04 ?94 ?10 ? * cfmvdlrlt mvd4, ?r9 -00000214 9e ?00 ?a4 ?10 ? * cfmvdlrls mvd0, ?r10 -00000218 ee ?0a ?44 ?10 ? * cfmvdlr mvd10, ?r4 -0000021c 4e ?13 ?14 ?10 ? * cfmvrdlmi r1, ?mvd3 -00000220 8e ?17 ?24 ?10 ? * cfmvrdlhi r2, ?mvd7 -00000224 2e ?1c ?c4 ?10 ? * cfmvrdlcs r12, ?mvd12 -00000228 6e ?10 ?34 ?10 ? * cfmvrdlvs r3, ?mvd0 -0000022c 7e ?1e ?d4 ?10 ? * cfmvrdlvc sp, ?mvd14 -00000230 3e ?0c ?14 ?30 ? * cfmvdhrcc mvd12, ?r1 -00000234 1e ?08 ?24 ?30 ? * cfmvdhrne mvd8, ?r2 -00000238 de ?06 ?c4 ?30 ? * cfmvdhrle mvd6, ?r12 -0000023c 4e ?02 ?34 ?30 ? * cfmvdhrmi mvd2, ?r3 -00000240 0e ?05 ?d4 ?30 ? * cfmvdhreq mvd5, ?sp -00000244 ae ?14 ?44 ?30 ? * cfmvrdhge r4, ?mvd4 -00000248 ee ?18 ?b4 ?30 ? * cfmvrdh r11, ?mvd8 -0000024c de ?12 ?54 ?30 ? * cfmvrdhle r5, ?mvd2 -00000250 1e ?16 ?64 ?30 ? * cfmvrdhne r6, ?mvd6 -00000254 be ?17 ?04 ?30 ? * cfmvrdhlt r0, ?mvd7 -00000258 5e ?0e ?45 ?10 ? * cfmv64lrpl mvdx14, ?r4 -0000025c ce ?0a ?b5 ?10 ? * cfmv64lrgt mvdx10, ?r11 -00000260 8e ?0f ?55 ?10 ? * cfmv64lrhi mvdx15, ?r5 -00000264 6e ?0b ?65 ?10 ? * cfmv64lrvs mvdx11, ?r6 -00000268 2e ?09 ?05 ?10 ? * cfmv64lrcs mvdx9, ?r0 -0000026c 5e ?1a ?d5 ?10 ? * cfmvr64lpl sp, ?mvdx10 -00000270 9e ?1e ?e5 ?10 ? * cfmvr64lls lr, ?mvdx14 -00000274 3e ?1d ?85 ?10 ? * cfmvr64lcc r8, ?mvdx13 -00000278 7e ?11 ?f5 ?10 ? * cfmvr64lvc pc, ?mvdx1 -0000027c ce ?1b ?95 ?10 ? * cfmvr64lgt r9, ?mvdx11 -00000280 0e ?07 ?d5 ?30 ? * cfmv64hreq mvdx7, ?sp -00000284 ee ?03 ?e5 ?30 ? * cfmv64hr mvdx3, ?lr -00000288 ae ?01 ?85 ?30 ? * cfmv64hrge mvdx1, ?r8 -0000028c ee ?0d ?f5 ?30 ? * cfmv64hr mvdx13, ?pc -00000290 be ?04 ?95 ?30 ? * cfmv64hrlt mvdx4, ?r9 -00000294 9e ?15 ?05 ?30 ? * cfmvr64hls r0, ?mvdx5 -00000298 ee ?19 ?75 ?30 ? * cfmvr64h r7, ?mvdx9 -0000029c 4e ?13 ?15 ?30 ? * cfmvr64hmi r1, ?mvdx3 -000002a0 8e ?17 ?25 ?30 ? * cfmvr64hhi r2, ?mvdx7 -000002a4 2e ?1c ?c5 ?30 ? * cfmvr64hcs r12, ?mvdx12 -000002a8 6e ?10 ?06 ?11 ? * cfmval32vs mvax1, ?mvfx0 -000002ac 7e ?1e ?06 ?13 ? * cfmval32vc mvax3, ?mvfx14 -000002b0 3e ?1a ?06 ?10 ? * cfmval32cc mvax0, ?mvfx10 -000002b4 1e ?1f ?06 ?11 ? * cfmval32ne mvax1, ?mvfx15 -000002b8 de ?1b ?06 ?10 ? * cfmval32le mvax0, ?mvfx11 -000002bc 4e ?01 ?06 ?12 ? * cfmv32almi mvfx2, ?mvax1 -000002c0 0e ?03 ?06 ?15 ? * cfmv32aleq mvfx5, ?mvax3 -000002c4 ae ?00 ?06 ?19 ? * cfmv32alge mvfx9, ?mvax0 -000002c8 ee ?01 ?06 ?13 ? * cfmv32al mvfx3, ?mvax1 -000002cc de ?00 ?06 ?17 ? * cfmv32alle mvfx7, ?mvax0 -000002d0 1e ?16 ?06 ?32 ? * cfmvam32ne mvax2, ?mvfx6 -000002d4 be ?17 ?06 ?30 ? * cfmvam32lt mvax0, ?mvfx7 -000002d8 5e ?13 ?06 ?32 ? * cfmvam32pl mvax2, ?mvfx3 -000002dc ce ?11 ?06 ?31 ? * cfmvam32gt mvax1, ?mvfx1 -000002e0 8e ?1d ?06 ?33 ? * cfmvam32hi mvax3, ?mvfx13 -000002e4 6e ?02 ?06 ?3b ? * cfmv32amvs mvfx11, ?mvax2 -000002e8 2e ?00 ?06 ?39 ? * cfmv32amcs mvfx9, ?mvax0 -000002ec 5e ?02 ?06 ?3f ? * cfmv32ampl mvfx15, ?mvax2 -000002f0 9e ?01 ?06 ?34 ? * cfmv32amls mvfx4, ?mvax1 -000002f4 3e ?03 ?06 ?38 ? * cfmv32amcc mvfx8, ?mvax3 -000002f8 7e ?11 ?06 ?50 ? * cfmvah32vc mvax0, ?mvfx1 -000002fc ce ?1b ?06 ?50 ? * cfmvah32gt mvax0, ?mvfx11 -00000300 0e ?15 ?06 ?51 ? * cfmvah32eq mvax1, ?mvfx5 -00000304 ee ?1c ?06 ?52 ? * cfmvah32 mvax2, ?mvfx12 -00000308 ae ?18 ?06 ?53 ? * cfmvah32ge mvax3, ?mvfx8 -0000030c ee ?00 ?06 ?5d ? * cfmv32ah mvfx13, ?mvax0 -00000310 be ?00 ?06 ?54 ? * cfmv32ahlt mvfx4, ?mvax0 -00000314 9e ?01 ?06 ?50 ? * cfmv32ahls mvfx0, ?mvax1 -00000318 ee ?02 ?06 ?5a ? * cfmv32ah mvfx10, ?mvax2 -0000031c 4e ?03 ?06 ?5e ? * cfmv32ahmi mvfx14, ?mvax3 -00000320 8e ?17 ?06 ?73 ? * cfmva32hi mvax3, ?mvfx7 -00000324 2e ?1c ?06 ?73 ? * cfmva32cs mvax3, ?mvfx12 -00000328 6e ?10 ?06 ?71 ? * cfmva32vs mvax1, ?mvfx0 -0000032c 7e ?1e ?06 ?73 ? * cfmva32vc mvax3, ?mvfx14 -00000330 3e ?1a ?06 ?70 ? * cfmva32cc mvax0, ?mvfx10 -00000334 1e ?03 ?06 ?78 ? * cfmv32ane mvfx8, ?mvax3 -00000338 de ?03 ?06 ?76 ? * cfmv32ale mvfx6, ?mvax3 -0000033c 4e ?01 ?06 ?72 ? * cfmv32ami mvfx2, ?mvax1 -00000340 0e ?03 ?06 ?75 ? * cfmv32aeq mvfx5, ?mvax3 -00000344 ae ?00 ?06 ?79 ? * cfmv32age mvfx9, ?mvax0 -00000348 ee ?18 ?06 ?93 ? * cfmva64 mvax3, ?mvdx8 -0000034c de ?12 ?06 ?92 ? * cfmva64le mvax2, ?mvdx2 -00000350 1e ?16 ?06 ?92 ? * cfmva64ne mvax2, ?mvdx6 -00000354 be ?17 ?06 ?90 ? * cfmva64lt mvax0, ?mvdx7 -00000358 5e ?13 ?06 ?92 ? * cfmva64pl mvax2, ?mvdx3 -0000035c ce ?03 ?06 ?9a ? * cfmv64agt mvdx10, ?mvax3 -00000360 8e ?02 ?06 ?9f ? * cfmv64ahi mvdx15, ?mvax2 -00000364 6e ?02 ?06 ?9b ? * cfmv64avs mvdx11, ?mvax2 -00000368 2e ?00 ?06 ?99 ? * cfmv64acs mvdx9, ?mvax0 -0000036c 5e ?02 ?06 ?9f ? * cfmv64apl mvdx15, ?mvax2 -00000370 9e ?1e ?06 ?b0 ? * cfmvsc32ls dspsc, ?mvfx14 -00000374 3e ?1d ?06 ?b0 ? * cfmvsc32cc dspsc, ?mvfx13 -00000378 7e ?11 ?06 ?b0 ? * cfmvsc32vc dspsc, ?mvfx1 -0000037c ce ?1b ?06 ?b0 ? * cfmvsc32gt dspsc, ?mvfx11 -00000380 0e ?15 ?06 ?b0 ? * cfmvsc32eq dspsc, ?mvfx5 -00000384 ee ?00 ?06 ?b3 ? * cfmv32sc mvfx3, ?dspsc -00000388 ae ?00 ?06 ?b1 ? * cfmv32scge mvfx1, ?dspsc -0000038c ee ?00 ?06 ?bd ? * cfmv32sc mvfx13, ?dspsc -00000390 be ?00 ?06 ?b4 ? * cfmv32sclt mvfx4, ?dspsc -00000394 9e ?00 ?06 ?b0 ? * cfmv32scls mvfx0, ?dspsc -00000398 ee ?09 ?a4 ?00 ? * cfcpys mvf10, ?mvf9 -0000039c 4e ?03 ?e4 ?00 ? * cfcpysmi mvf14, ?mvf3 -000003a0 8e ?07 ?d4 ?00 ? * cfcpyshi mvf13, ?mvf7 -000003a4 2e ?0c ?14 ?00 ? * cfcpyscs mvf1, ?mvf12 -000003a8 6e ?00 ?b4 ?00 ? * cfcpysvs mvf11, ?mvf0 -000003ac 7e ?0e ?54 ?20 ? * cfcpydvc mvd5, ?mvd14 -000003b0 3e ?0a ?c4 ?20 ? * cfcpydcc mvd12, ?mvd10 -000003b4 1e ?0f ?84 ?20 ? * cfcpydne mvd8, ?mvd15 -000003b8 de ?0b ?64 ?20 ? * cfcpydle mvd6, ?mvd11 -000003bc 4e ?09 ?24 ?20 ? * cfcpydmi mvd2, ?mvd9 +0*1e0 9e ?00 ?a4 ?50 ? * cfmvsrls mvf0, ?sl +0*1e4 ee ?0a ?44 ?50 ? * cfmvsr mvf10, ?r4 +0*1e8 4e ?0e ?b4 ?50 ? * cfmvsrmi mvf14, ?fp +0*1ec 8e ?0d ?54 ?50 ? * cfmvsrhi mvf13, ?r5 +0*1f0 2e ?01 ?64 ?50 ? * cfmvsrcs mvf1, ?r6 +0*1f4 6e ?10 ?34 ?50 ? * cfmvrsvs r3, ?mvf0 +0*1f8 7e ?1e ?d4 ?50 ? * cfmvrsvc sp, ?mvf14 +0*1fc 3e ?1a ?e4 ?50 ? * cfmvrscc lr, ?mvf10 +0*200 1e ?1f ?84 ?50 ? * cfmvrsne r8, ?mvf15 +0*204 de ?1b ?f4 ?50 ? * cfmvrsle pc, ?mvf11 +0*208 4e ?02 ?34 ?10 ? * cfmvdlrmi mvd2, ?r3 +0*20c 0e ?05 ?d4 ?10 ? * cfmvdlreq mvd5, ?sp +0*210 ae ?09 ?e4 ?10 ? * cfmvdlrge mvd9, ?lr +0*214 ee ?03 ?84 ?10 ? * cfmvdlr mvd3, ?r8 +0*218 de ?07 ?f4 ?10 ? * cfmvdlrle mvd7, ?pc +0*21c 1e ?16 ?64 ?10 ? * cfmvrdlne r6, ?mvd6 +0*220 be ?17 ?04 ?10 ? * cfmvrdllt r0, ?mvd7 +0*224 5e ?13 ?74 ?10 ? * cfmvrdlpl r7, ?mvd3 +0*228 ce ?11 ?14 ?10 ? * cfmvrdlgt r1, ?mvd1 +0*22c 8e ?1d ?24 ?10 ? * cfmvrdlhi r2, ?mvd13 +0*230 6e ?0b ?64 ?30 ? * cfmvdhrvs mvd11, ?r6 +0*234 2e ?09 ?04 ?30 ? * cfmvdhrcs mvd9, ?r0 +0*238 5e ?0f ?74 ?30 ? * cfmvdhrpl mvd15, ?r7 +0*23c 9e ?04 ?14 ?30 ? * cfmvdhrls mvd4, ?r1 +0*240 3e ?08 ?24 ?30 ? * cfmvdhrcc mvd8, ?r2 +0*244 7e ?11 ?f4 ?30 ? * cfmvrdhvc pc, ?mvd1 +0*248 ce ?1b ?94 ?30 ? * cfmvrdhgt r9, ?mvd11 +0*24c 0e ?15 ?a4 ?30 ? * cfmvrdheq sl, ?mvd5 +0*250 ee ?1c ?44 ?30 ? * cfmvrdh r4, ?mvd12 +0*254 ae ?18 ?b4 ?30 ? * cfmvrdhge fp, ?mvd8 +0*258 ee ?0d ?f5 ?10 ? * cfmv64lr mvdx13, ?pc +0*25c be ?04 ?95 ?10 ? * cfmv64lrlt mvdx4, ?r9 +0*260 9e ?00 ?a5 ?10 ? * cfmv64lrls mvdx0, ?sl +0*264 ee ?0a ?45 ?10 ? * cfmv64lr mvdx10, ?r4 +0*268 4e ?0e ?b5 ?10 ? * cfmv64lrmi mvdx14, ?fp +0*26c 8e ?17 ?25 ?10 ? * cfmvr64lhi r2, ?mvdx7 +0*270 2e ?1c ?c5 ?10 ? * cfmvr64lcs ip, ?mvdx12 +0*274 6e ?10 ?35 ?10 ? * cfmvr64lvs r3, ?mvdx0 +0*278 7e ?1e ?d5 ?10 ? * cfmvr64lvc sp, ?mvdx14 +0*27c 3e ?1a ?e5 ?10 ? * cfmvr64lcc lr, ?mvdx10 +0*280 1e ?08 ?25 ?30 ? * cfmv64hrne mvdx8, ?r2 +0*284 de ?06 ?c5 ?30 ? * cfmv64hrle mvdx6, ?ip +0*288 4e ?02 ?35 ?30 ? * cfmv64hrmi mvdx2, ?r3 +0*28c 0e ?05 ?d5 ?30 ? * cfmv64hreq mvdx5, ?sp +0*290 ae ?09 ?e5 ?30 ? * cfmv64hrge mvdx9, ?lr +0*294 ee ?18 ?b5 ?30 ? * cfmvr64h fp, ?mvdx8 +0*298 de ?12 ?55 ?30 ? * cfmvr64hle r5, ?mvdx2 +0*29c 1e ?16 ?65 ?30 ? * cfmvr64hne r6, ?mvdx6 +0*2a0 be ?17 ?05 ?30 ? * cfmvr64hlt r0, ?mvdx7 +0*2a4 5e ?13 ?75 ?30 ? * cfmvr64hpl r7, ?mvdx3 +0*2a8 ce ?11 ?06 ?11 ? * cfmval32gt mvax1, ?mvfx1 +0*2ac 8e ?1d ?06 ?13 ? * cfmval32hi mvax3, ?mvfx13 +0*2b0 6e ?14 ?06 ?13 ? * cfmval32vs mvax3, ?mvfx4 +0*2b4 2e ?10 ?06 ?11 ? * cfmval32cs mvax1, ?mvfx0 +0*2b8 5e ?1a ?06 ?13 ? * cfmval32pl mvax3, ?mvfx10 +0*2bc 9e ?01 ?06 ?14 ? * cfmv32alls mvfx4, ?mvax1 +0*2c0 3e ?03 ?06 ?18 ? * cfmv32alcc mvfx8, ?mvax3 +0*2c4 7e ?03 ?06 ?12 ? * cfmv32alvc mvfx2, ?mvax3 +0*2c8 ce ?01 ?06 ?16 ? * cfmv32algt mvfx6, ?mvax1 +0*2cc 0e ?03 ?06 ?17 ? * cfmv32aleq mvfx7, ?mvax3 +0*2d0 ee ?1c ?06 ?32 ? * cfmvam32 mvax2, ?mvfx12 +0*2d4 ae ?18 ?06 ?33 ? * cfmvam32ge mvax3, ?mvfx8 +0*2d8 ee ?16 ?06 ?32 ? * cfmvam32 mvax2, ?mvfx6 +0*2dc be ?12 ?06 ?32 ? * cfmvam32lt mvax2, ?mvfx2 +0*2e0 9e ?15 ?06 ?30 ? * cfmvam32ls mvax0, ?mvfx5 +0*2e4 ee ?02 ?06 ?3a ? * cfmv32am mvfx10, ?mvax2 +0*2e8 4e ?03 ?06 ?3e ? * cfmv32ammi mvfx14, ?mvax3 +0*2ec 8e ?02 ?06 ?3d ? * cfmv32amhi mvfx13, ?mvax2 +0*2f0 2e ?02 ?06 ?31 ? * cfmv32amcs mvfx1, ?mvax2 +0*2f4 6e ?00 ?06 ?3b ? * cfmv32amvs mvfx11, ?mvax0 +0*2f8 7e ?1e ?06 ?53 ? * cfmvah32vc mvax3, ?mvfx14 +0*2fc 3e ?1a ?06 ?50 ? * cfmvah32cc mvax0, ?mvfx10 +0*300 1e ?1f ?06 ?51 ? * cfmvah32ne mvax1, ?mvfx15 +0*304 de ?1b ?06 ?50 ? * cfmvah32le mvax0, ?mvfx11 +0*308 4e ?19 ?06 ?50 ? * cfmvah32mi mvax0, ?mvfx9 +0*30c 0e ?03 ?06 ?55 ? * cfmv32aheq mvfx5, ?mvax3 +0*310 ae ?00 ?06 ?59 ? * cfmv32ahge mvfx9, ?mvax0 +0*314 ee ?01 ?06 ?53 ? * cfmv32ah mvfx3, ?mvax1 +0*318 de ?00 ?06 ?57 ? * cfmv32ahle mvfx7, ?mvax0 +0*31c 1e ?00 ?06 ?5c ? * cfmv32ahne mvfx12, ?mvax0 +0*320 be ?17 ?06 ?70 ? * cfmva32lt mvax0, ?mvfx7 +0*324 5e ?13 ?06 ?72 ? * cfmva32pl mvax2, ?mvfx3 +0*328 ce ?11 ?06 ?71 ? * cfmva32gt mvax1, ?mvfx1 +0*32c 8e ?1d ?06 ?73 ? * cfmva32hi mvax3, ?mvfx13 +0*330 6e ?14 ?06 ?73 ? * cfmva32vs mvax3, ?mvfx4 +0*334 2e ?00 ?06 ?79 ? * cfmv32acs mvfx9, ?mvax0 +0*338 5e ?02 ?06 ?7f ? * cfmv32apl mvfx15, ?mvax2 +0*33c 9e ?01 ?06 ?74 ? * cfmv32als mvfx4, ?mvax1 +0*340 3e ?03 ?06 ?78 ? * cfmv32acc mvfx8, ?mvax3 +0*344 7e ?03 ?06 ?72 ? * cfmv32avc mvfx2, ?mvax3 +0*348 ce ?1b ?06 ?90 ? * cfmva64gt mvax0, ?mvdx11 +0*34c 0e ?15 ?06 ?91 ? * cfmva64eq mvax1, ?mvdx5 +0*350 ee ?1c ?06 ?92 ? * cfmva64 mvax2, ?mvdx12 +0*354 ae ?18 ?06 ?93 ? * cfmva64ge mvax3, ?mvdx8 +0*358 ee ?16 ?06 ?92 ? * cfmva64 mvax2, ?mvdx6 +0*35c be ?00 ?06 ?94 ? * cfmv64alt mvdx4, ?mvax0 +0*360 9e ?01 ?06 ?90 ? * cfmv64als mvdx0, ?mvax1 +0*364 ee ?02 ?06 ?9a ? * cfmv64a mvdx10, ?mvax2 +0*368 4e ?03 ?06 ?9e ? * cfmv64ami mvdx14, ?mvax3 +0*36c 8e ?02 ?06 ?9d ? * cfmv64ahi mvdx13, ?mvax2 +0*370 2e ?1c ?06 ?b0 ? * cfmvsc32cs dspsc, ?mvfx12 +0*374 6e ?10 ?06 ?b0 ? * cfmvsc32vs dspsc, ?mvfx0 +0*378 7e ?1e ?06 ?b0 ? * cfmvsc32vc dspsc, ?mvfx14 +0*37c 3e ?1a ?06 ?b0 ? * cfmvsc32cc dspsc, ?mvfx10 +0*380 1e ?1f ?06 ?b0 ? * cfmvsc32ne dspsc, ?mvfx15 +0*384 de ?00 ?06 ?b6 ? * cfmv32scle mvfx6, ?dspsc +0*388 4e ?00 ?06 ?b2 ? * cfmv32scmi mvfx2, ?dspsc +0*38c 0e ?00 ?06 ?b5 ? * cfmv32sceq mvfx5, ?dspsc +0*390 ae ?00 ?06 ?b9 ? * cfmv32scge mvfx9, ?dspsc +0*394 ee ?00 ?06 ?b3 ? * cfmv32sc mvfx3, ?dspsc +0*398 de ?02 ?74 ?00 ? * cfcpysle mvf7, ?mvf2 +0*39c 1e ?06 ?c4 ?00 ? * cfcpysne mvf12, ?mvf6 +0*3a0 be ?07 ?04 ?00 ? * cfcpyslt mvf0, ?mvf7 +0*3a4 5e ?03 ?e4 ?00 ? * cfcpyspl mvf14, ?mvf3 +0*3a8 ce ?01 ?a4 ?00 ? * cfcpysgt mvf10, ?mvf1 +0*3ac 8e ?0d ?f4 ?20 ? * cfcpydhi mvd15, ?mvd13 +0*3b0 6e ?04 ?b4 ?20 ? * cfcpydvs mvd11, ?mvd4 +0*3b4 2e ?00 ?94 ?20 ? * cfcpydcs mvd9, ?mvd0 +0*3b8 5e ?0a ?f4 ?20 ? * cfcpydpl mvd15, ?mvd10 +0*3bc 9e ?0e ?44 ?20 ? * cfcpydls mvd4, ?mvd14 # conv: -000003c0 0e ?0f ?54 ?60 ? * cfcvtsdeq mvd5, ?mvf15 -000003c4 ae ?04 ?94 ?60 ? * cfcvtsdge mvd9, ?mvf4 -000003c8 ee ?08 ?34 ?60 ? * cfcvtsd mvd3, ?mvf8 -000003cc de ?02 ?74 ?60 ? * cfcvtsdle mvd7, ?mvf2 -000003d0 1e ?06 ?c4 ?60 ? * cfcvtsdne mvd12, ?mvf6 -000003d4 be ?07 ?04 ?40 ? * cfcvtdslt mvf0, ?mvd7 -000003d8 5e ?03 ?e4 ?40 ? * cfcvtdspl mvf14, ?mvd3 -000003dc ce ?01 ?a4 ?40 ? * cfcvtdsgt mvf10, ?mvd1 -000003e0 8e ?0d ?f4 ?40 ? * cfcvtdshi mvf15, ?mvd13 -000003e4 6e ?04 ?b4 ?40 ? * cfcvtdsvs mvf11, ?mvd4 -000003e8 2e ?00 ?94 ?80 ? * cfcvt32scs mvf9, ?mvfx0 -000003ec 5e ?0a ?f4 ?80 ? * cfcvt32spl mvf15, ?mvfx10 -000003f0 9e ?0e ?44 ?80 ? * cfcvt32sls mvf4, ?mvfx14 -000003f4 3e ?0d ?84 ?80 ? * cfcvt32scc mvf8, ?mvfx13 -000003f8 7e ?01 ?24 ?80 ? * cfcvt32svc mvf2, ?mvfx1 -000003fc ce ?0b ?64 ?a0 ? * cfcvt32dgt mvd6, ?mvfx11 -00000400 0e ?05 ?74 ?a0 ? * cfcvt32deq mvd7, ?mvfx5 -00000404 ee ?0c ?34 ?a0 ? * cfcvt32d mvd3, ?mvfx12 -00000408 ae ?08 ?14 ?a0 ? * cfcvt32dge mvd1, ?mvfx8 -0000040c ee ?06 ?d4 ?a0 ? * cfcvt32d mvd13, ?mvfx6 -00000410 be ?02 ?44 ?c0 ? * cfcvt64slt mvf4, ?mvdx2 -00000414 9e ?05 ?04 ?c0 ? * cfcvt64sls mvf0, ?mvdx5 -00000418 ee ?09 ?a4 ?c0 ? * cfcvt64s mvf10, ?mvdx9 -0000041c 4e ?03 ?e4 ?c0 ? * cfcvt64smi mvf14, ?mvdx3 -00000420 8e ?07 ?d4 ?c0 ? * cfcvt64shi mvf13, ?mvdx7 -00000424 2e ?0c ?14 ?e0 ? * cfcvt64dcs mvd1, ?mvdx12 -00000428 6e ?00 ?b4 ?e0 ? * cfcvt64dvs mvd11, ?mvdx0 -0000042c 7e ?0e ?54 ?e0 ? * cfcvt64dvc mvd5, ?mvdx14 -00000430 3e ?0a ?c4 ?e0 ? * cfcvt64dcc mvd12, ?mvdx10 -00000434 1e ?0f ?84 ?e0 ? * cfcvt64dne mvd8, ?mvdx15 -00000438 de ?1b ?65 ?80 ? * cfcvts32le mvfx6, ?mvf11 -0000043c 4e ?19 ?25 ?80 ? * cfcvts32mi mvfx2, ?mvf9 -00000440 0e ?1f ?55 ?80 ? * cfcvts32eq mvfx5, ?mvf15 -00000444 ae ?14 ?95 ?80 ? * cfcvts32ge mvfx9, ?mvf4 -00000448 ee ?18 ?35 ?80 ? * cfcvts32 mvfx3, ?mvf8 -0000044c de ?12 ?75 ?a0 ? * cfcvtd32le mvfx7, ?mvd2 -00000450 1e ?16 ?c5 ?a0 ? * cfcvtd32ne mvfx12, ?mvd6 -00000454 be ?17 ?05 ?a0 ? * cfcvtd32lt mvfx0, ?mvd7 -00000458 5e ?13 ?e5 ?a0 ? * cfcvtd32pl mvfx14, ?mvd3 -0000045c ce ?11 ?a5 ?a0 ? * cfcvtd32gt mvfx10, ?mvd1 -00000460 8e ?1d ?f5 ?c0 ? * cftruncs32hi mvfx15, ?mvf13 -00000464 6e ?14 ?b5 ?c0 ? * cftruncs32vs mvfx11, ?mvf4 -00000468 2e ?10 ?95 ?c0 ? * cftruncs32cs mvfx9, ?mvf0 -0000046c 5e ?1a ?f5 ?c0 ? * cftruncs32pl mvfx15, ?mvf10 -00000470 9e ?1e ?45 ?c0 ? * cftruncs32ls mvfx4, ?mvf14 -00000474 3e ?1d ?85 ?e0 ? * cftruncd32cc mvfx8, ?mvd13 -00000478 7e ?11 ?25 ?e0 ? * cftruncd32vc mvfx2, ?mvd1 -0000047c ce ?1b ?65 ?e0 ? * cftruncd32gt mvfx6, ?mvd11 -00000480 0e ?15 ?75 ?e0 ? * cftruncd32eq mvfx7, ?mvd5 -00000484 ee ?1c ?35 ?e0 ? * cftruncd32 mvfx3, ?mvd12 +0*3c0 3e ?0d ?84 ?60 ? * cfcvtsdcc mvd8, ?mvf13 +0*3c4 7e ?01 ?24 ?60 ? * cfcvtsdvc mvd2, ?mvf1 +0*3c8 ce ?0b ?64 ?60 ? * cfcvtsdgt mvd6, ?mvf11 +0*3cc 0e ?05 ?74 ?60 ? * cfcvtsdeq mvd7, ?mvf5 +0*3d0 ee ?0c ?34 ?60 ? * cfcvtsd mvd3, ?mvf12 +0*3d4 ae ?08 ?14 ?40 ? * cfcvtdsge mvf1, ?mvd8 +0*3d8 ee ?06 ?d4 ?40 ? * cfcvtds mvf13, ?mvd6 +0*3dc be ?02 ?44 ?40 ? * cfcvtdslt mvf4, ?mvd2 +0*3e0 9e ?05 ?04 ?40 ? * cfcvtdsls mvf0, ?mvd5 +0*3e4 ee ?09 ?a4 ?40 ? * cfcvtds mvf10, ?mvd9 +0*3e8 4e ?03 ?e4 ?80 ? * cfcvt32smi mvf14, ?mvfx3 +0*3ec 8e ?07 ?d4 ?80 ? * cfcvt32shi mvf13, ?mvfx7 +0*3f0 2e ?0c ?14 ?80 ? * cfcvt32scs mvf1, ?mvfx12 +0*3f4 6e ?00 ?b4 ?80 ? * cfcvt32svs mvf11, ?mvfx0 +0*3f8 7e ?0e ?54 ?80 ? * cfcvt32svc mvf5, ?mvfx14 +0*3fc 3e ?0a ?c4 ?a0 ? * cfcvt32dcc mvd12, ?mvfx10 +0*400 1e ?0f ?84 ?a0 ? * cfcvt32dne mvd8, ?mvfx15 +0*404 de ?0b ?64 ?a0 ? * cfcvt32dle mvd6, ?mvfx11 +0*408 4e ?09 ?24 ?a0 ? * cfcvt32dmi mvd2, ?mvfx9 +0*40c 0e ?0f ?54 ?a0 ? * cfcvt32deq mvd5, ?mvfx15 +0*410 ae ?04 ?94 ?c0 ? * cfcvt64sge mvf9, ?mvdx4 +0*414 ee ?08 ?34 ?c0 ? * cfcvt64s mvf3, ?mvdx8 +0*418 de ?02 ?74 ?c0 ? * cfcvt64sle mvf7, ?mvdx2 +0*41c 1e ?06 ?c4 ?c0 ? * cfcvt64sne mvf12, ?mvdx6 +0*420 be ?07 ?04 ?c0 ? * cfcvt64slt mvf0, ?mvdx7 +0*424 5e ?03 ?e4 ?e0 ? * cfcvt64dpl mvd14, ?mvdx3 +0*428 ce ?01 ?a4 ?e0 ? * cfcvt64dgt mvd10, ?mvdx1 +0*42c 8e ?0d ?f4 ?e0 ? * cfcvt64dhi mvd15, ?mvdx13 +0*430 6e ?04 ?b4 ?e0 ? * cfcvt64dvs mvd11, ?mvdx4 +0*434 2e ?00 ?94 ?e0 ? * cfcvt64dcs mvd9, ?mvdx0 +0*438 5e ?1a ?f5 ?80 ? * cfcvts32pl mvfx15, ?mvf10 +0*43c 9e ?1e ?45 ?80 ? * cfcvts32ls mvfx4, ?mvf14 +0*440 3e ?1d ?85 ?80 ? * cfcvts32cc mvfx8, ?mvf13 +0*444 7e ?11 ?25 ?80 ? * cfcvts32vc mvfx2, ?mvf1 +0*448 ce ?1b ?65 ?80 ? * cfcvts32gt mvfx6, ?mvf11 +0*44c 0e ?15 ?75 ?a0 ? * cfcvtd32eq mvfx7, ?mvd5 +0*450 ee ?1c ?35 ?a0 ? * cfcvtd32 mvfx3, ?mvd12 +0*454 ae ?18 ?15 ?a0 ? * cfcvtd32ge mvfx1, ?mvd8 +0*458 ee ?16 ?d5 ?a0 ? * cfcvtd32 mvfx13, ?mvd6 +0*45c be ?12 ?45 ?a0 ? * cfcvtd32lt mvfx4, ?mvd2 +0*460 9e ?15 ?05 ?c0 ? * cftruncs32ls mvfx0, ?mvf5 +0*464 ee ?19 ?a5 ?c0 ? * cftruncs32 mvfx10, ?mvf9 +0*468 4e ?13 ?e5 ?c0 ? * cftruncs32mi mvfx14, ?mvf3 +0*46c 8e ?17 ?d5 ?c0 ? * cftruncs32hi mvfx13, ?mvf7 +0*470 2e ?1c ?15 ?c0 ? * cftruncs32cs mvfx1, ?mvf12 +0*474 6e ?10 ?b5 ?e0 ? * cftruncd32vs mvfx11, ?mvd0 +0*478 7e ?1e ?55 ?e0 ? * cftruncd32vc mvfx5, ?mvd14 +0*47c 3e ?1a ?c5 ?e0 ? * cftruncd32cc mvfx12, ?mvd10 +0*480 1e ?1f ?85 ?e0 ? * cftruncd32ne mvfx8, ?mvd15 +0*484 de ?1b ?65 ?e0 ? * cftruncd32le mvfx6, ?mvd11 # shift: -00000488 ae ?01 ?25 ?58 ? * cfrshl32ge mvfx1, ?mvfx8, ?r2 -0000048c 6e ?0b ?95 ?54 ? * cfrshl32vs mvfx11, ?mvfx4, ?r9 -00000490 0e ?05 ?75 ?5f ? * cfrshl32eq mvfx5, ?mvfx15, ?r7 -00000494 4e ?0e ?85 ?53 ? * cfrshl32mi mvfx14, ?mvfx3, ?r8 -00000498 7e ?02 ?65 ?51 ? * cfrshl32vc mvfx2, ?mvfx1, ?r6 -0000049c be ?00 ?d5 ?77 ? * cfrshl64lt mvdx0, ?mvdx7, ?sp -000004a0 3e ?0c ?b5 ?7a ? * cfrshl64cc mvdx12, ?mvdx10, ?r11 -000004a4 ee ?0d ?c5 ?76 ? * cfrshl64 mvdx13, ?mvdx6, ?r12 -000004a8 2e ?09 ?a5 ?70 ? * cfrshl64cs mvdx9, ?mvdx0, ?r10 -000004ac ae ?09 ?15 ?74 ? * cfrshl64ge mvdx9, ?mvdx4, ?r1 -000004b0 8e ?07 ?d5 ?41 ? * cfsh32hi mvfx13, ?mvfx7, ?#33 -000004b4 ce ?0b ?65 ?00 ? * cfsh32gt mvfx6, ?mvfx11, ?#0 -000004b8 5e ?03 ?e5 ?40 ? * cfsh32pl mvfx14, ?mvfx3, ?#32 -000004bc 1e ?0f ?85 ?c1 ? * cfsh32ne mvfx8, ?mvfx15, ?#-31 -000004c0 be ?02 ?45 ?01 ? * cfsh32lt mvfx4, ?mvfx2, ?#1 -000004c4 5e ?2a ?f5 ?c0 ? * cfsh64pl mvdx15, ?mvdx10, ?#-32 -000004c8 ee ?28 ?35 ?c5 ? * cfsh64 mvdx3, ?mvdx8, ?#-27 -000004cc 2e ?2c ?15 ?eb ? * cfsh64cs mvdx1, ?mvdx12, ?#-5 -000004d0 0e ?25 ?75 ?6f ? * cfsh64eq mvdx7, ?mvdx5, ?#63 -000004d4 ce ?21 ?a5 ?09 ? * cfsh64gt mvdx10, ?mvdx1, ?#9 +0*488 4e ?02 ?05 ?59 ? * cfrshl32mi mvfx2, ?mvfx9, ?r0 +0*48c ee ?0a ?e5 ?59 ? * cfrshl32 mvfx10, ?mvfx9, ?lr +0*490 3e ?08 ?55 ?5d ? * cfrshl32cc mvfx8, ?mvfx13, ?r5 +0*494 1e ?0c ?35 ?56 ? * cfrshl32ne mvfx12, ?mvfx6, ?r3 +0*498 7e ?05 ?45 ?5e ? * cfrshl32vc mvfx5, ?mvfx14, ?r4 +0*49c ae ?01 ?25 ?78 ? * cfrshl64ge mvdx1, ?mvdx8, ?r2 +0*4a0 6e ?0b ?95 ?74 ? * cfrshl64vs mvdx11, ?mvdx4, ?r9 +0*4a4 0e ?05 ?75 ?7f ? * cfrshl64eq mvdx5, ?mvdx15, ?r7 +0*4a8 4e ?0e ?85 ?73 ? * cfrshl64mi mvdx14, ?mvdx3, ?r8 +0*4ac 7e ?02 ?65 ?71 ? * cfrshl64vc mvdx2, ?mvdx1, ?r6 +0*4b0 be ?07 ?05 ?80 ? * cfsh32lt mvfx0, ?mvfx7, ?#-64 +0*4b4 3e ?0a ?c5 ?cc ? * cfsh32cc mvfx12, ?mvfx10, ?#-20 +0*4b8 ee ?06 ?d5 ?48 ? * cfsh32 mvfx13, ?mvfx6, ?#40 +0*4bc 2e ?00 ?95 ?ef ? * cfsh32cs mvfx9, ?mvfx0, ?#-1 +0*4c0 ae ?04 ?95 ?28 ? * cfsh32ge mvfx9, ?mvfx4, ?#24 +0*4c4 8e ?27 ?d5 ?41 ? * cfsh64hi mvdx13, ?mvdx7, ?#33 +0*4c8 ce ?2b ?65 ?00 ? * cfsh64gt mvdx6, ?mvdx11, ?#0 +0*4cc 5e ?23 ?e5 ?40 ? * cfsh64pl mvdx14, ?mvdx3, ?#32 +0*4d0 1e ?2f ?85 ?c1 ? * cfsh64ne mvdx8, ?mvdx15, ?#-31 +0*4d4 be ?22 ?45 ?01 ? * cfsh64lt mvdx4, ?mvdx2, ?#1 # comp: -000004d8 de ?1b ?f4 ?94 ? * cfcmpsle pc, ?mvf11, ?mvf4 -000004dc 9e ?15 ?04 ?9f ? * cfcmpsls r0, ?mvf5, ?mvf15 -000004e0 9e ?1e ?e4 ?93 ? * cfcmpsls lr, ?mvf14, ?mvf3 -000004e4 de ?12 ?54 ?91 ? * cfcmpsle r5, ?mvf2, ?mvf1 -000004e8 6e ?10 ?34 ?97 ? * cfcmpsvs r3, ?mvf0, ?mvf7 -000004ec ee ?1c ?44 ?ba ? * cfcmpd r4, ?mvd12, ?mvd10 -000004f0 8e ?1d ?24 ?b6 ? * cfcmpdhi r2, ?mvd13, ?mvd6 -000004f4 4e ?19 ?94 ?b0 ? * cfcmpdmi r9, ?mvd9, ?mvd0 -000004f8 ee ?19 ?74 ?b4 ? * cfcmpd r7, ?mvd9, ?mvd4 -000004fc 3e ?1d ?84 ?b7 ? * cfcmpdcc r8, ?mvd13, ?mvd7 -00000500 1e ?16 ?65 ?9b ? * cfcmp32ne r6, ?mvfx6, ?mvfx11 -00000504 7e ?1e ?d5 ?93 ? * cfcmp32vc sp, ?mvfx14, ?mvfx3 -00000508 ae ?18 ?b5 ?9f ? * cfcmp32ge r11, ?mvfx8, ?mvfx15 -0000050c 6e ?14 ?c5 ?92 ? * cfcmp32vs r12, ?mvfx4, ?mvfx2 -00000510 0e ?1f ?a5 ?9a ? * cfcmp32eq r10, ?mvfx15, ?mvfx10 -00000514 4e ?13 ?15 ?b8 ? * cfcmp64mi r1, ?mvdx3, ?mvdx8 -00000518 7e ?11 ?f5 ?bc ? * cfcmp64vc pc, ?mvdx1, ?mvdx12 -0000051c be ?17 ?05 ?b5 ? * cfcmp64lt r0, ?mvdx7, ?mvdx5 -00000520 3e ?1a ?e5 ?b1 ? * cfcmp64cc lr, ?mvdx10, ?mvdx1 -00000524 ee ?16 ?55 ?bb ? * cfcmp64 r5, ?mvdx6, ?mvdx11 +0*4d8 5e ?1a ?d4 ?99 ? * cfcmpspl sp, ?mvf10, ?mvf9 +0*4dc ee ?18 ?b4 ?9d ? * cfcmps fp, ?mvf8, ?mvf13 +0*4e0 2e ?1c ?c4 ?96 ? * cfcmpscs ip, ?mvf12, ?mvf6 +0*4e4 0e ?15 ?a4 ?9e ? * cfcmpseq sl, ?mvf5, ?mvf14 +0*4e8 ce ?11 ?14 ?98 ? * cfcmpsgt r1, ?mvf1, ?mvf8 +0*4ec de ?1b ?f4 ?b4 ? * cfcmpdle pc, ?mvd11, ?mvd4 +0*4f0 9e ?15 ?04 ?bf ? * cfcmpdls r0, ?mvd5, ?mvd15 +0*4f4 9e ?1e ?e4 ?b3 ? * cfcmpdls lr, ?mvd14, ?mvd3 +0*4f8 de ?12 ?54 ?b1 ? * cfcmpdle r5, ?mvd2, ?mvd1 +0*4fc 6e ?10 ?34 ?b7 ? * cfcmpdvs r3, ?mvd0, ?mvd7 +0*500 ee ?1c ?45 ?9a ? * cfcmp32 r4, ?mvfx12, ?mvfx10 +0*504 8e ?1d ?25 ?96 ? * cfcmp32hi r2, ?mvfx13, ?mvfx6 +0*508 4e ?19 ?95 ?90 ? * cfcmp32mi r9, ?mvfx9, ?mvfx0 +0*50c ee ?19 ?75 ?94 ? * cfcmp32 r7, ?mvfx9, ?mvfx4 +0*510 3e ?1d ?85 ?97 ? * cfcmp32cc r8, ?mvfx13, ?mvfx7 +0*514 1e ?16 ?65 ?bb ? * cfcmp64ne r6, ?mvdx6, ?mvdx11 +0*518 7e ?1e ?d5 ?b3 ? * cfcmp64vc sp, ?mvdx14, ?mvdx3 +0*51c ae ?18 ?b5 ?bf ? * cfcmp64ge fp, ?mvdx8, ?mvdx15 +0*520 6e ?14 ?c5 ?b2 ? * cfcmp64vs ip, ?mvdx4, ?mvdx2 +0*524 0e ?1f ?a5 ?ba ? * cfcmp64eq sl, ?mvdx15, ?mvdx10 # fp_arith: -00000528 2e ?30 ?94 ?00 ? * cfabsscs mvf9, ?mvf0 -0000052c 5e ?3a ?f4 ?00 ? * cfabsspl mvf15, ?mvf10 -00000530 9e ?3e ?44 ?00 ? * cfabssls mvf4, ?mvf14 -00000534 3e ?3d ?84 ?00 ? * cfabsscc mvf8, ?mvf13 -00000538 7e ?31 ?24 ?00 ? * cfabssvc mvf2, ?mvf1 -0000053c ce ?3b ?64 ?20 ? * cfabsdgt mvd6, ?mvd11 -00000540 0e ?35 ?74 ?20 ? * cfabsdeq mvd7, ?mvd5 -00000544 ee ?3c ?34 ?20 ? * cfabsd mvd3, ?mvd12 -00000548 ae ?38 ?14 ?20 ? * cfabsdge mvd1, ?mvd8 -0000054c ee ?36 ?d4 ?20 ? * cfabsd mvd13, ?mvd6 -00000550 be ?32 ?44 ?40 ? * cfnegslt mvf4, ?mvf2 -00000554 9e ?35 ?04 ?40 ? * cfnegsls mvf0, ?mvf5 -00000558 ee ?39 ?a4 ?40 ? * cfnegs mvf10, ?mvf9 -0000055c 4e ?33 ?e4 ?40 ? * cfnegsmi mvf14, ?mvf3 -00000560 8e ?37 ?d4 ?40 ? * cfnegshi mvf13, ?mvf7 -00000564 2e ?3c ?14 ?60 ? * cfnegdcs mvd1, ?mvd12 -00000568 6e ?30 ?b4 ?60 ? * cfnegdvs mvd11, ?mvd0 -0000056c 7e ?3e ?54 ?60 ? * cfnegdvc mvd5, ?mvd14 -00000570 3e ?3a ?c4 ?60 ? * cfnegdcc mvd12, ?mvd10 -00000574 1e ?3f ?84 ?60 ? * cfnegdne mvd8, ?mvd15 -00000578 de ?3b ?64 ?84 ? * cfaddsle mvf6, ?mvf11, ?mvf4 -0000057c 9e ?35 ?04 ?8f ? * cfaddsls mvf0, ?mvf5, ?mvf15 -00000580 9e ?3e ?44 ?83 ? * cfaddsls mvf4, ?mvf14, ?mvf3 -00000584 de ?32 ?74 ?81 ? * cfaddsle mvf7, ?mvf2, ?mvf1 -00000588 6e ?30 ?b4 ?87 ? * cfaddsvs mvf11, ?mvf0, ?mvf7 -0000058c ee ?3c ?34 ?aa ? * cfaddd mvd3, ?mvd12, ?mvd10 -00000590 8e ?3d ?f4 ?a6 ? * cfadddhi mvd15, ?mvd13, ?mvd6 -00000594 4e ?39 ?24 ?a0 ? * cfadddmi mvd2, ?mvd9, ?mvd0 -00000598 ee ?39 ?a4 ?a4 ? * cfaddd mvd10, ?mvd9, ?mvd4 -0000059c 3e ?3d ?84 ?a7 ? * cfadddcc mvd8, ?mvd13, ?mvd7 -000005a0 1e ?36 ?c4 ?cb ? * cfsubsne mvf12, ?mvf6, ?mvf11 -000005a4 7e ?3e ?54 ?c3 ? * cfsubsvc mvf5, ?mvf14, ?mvf3 -000005a8 ae ?38 ?14 ?cf ? * cfsubsge mvf1, ?mvf8, ?mvf15 -000005ac 6e ?34 ?b4 ?c2 ? * cfsubsvs mvf11, ?mvf4, ?mvf2 -000005b0 0e ?3f ?54 ?ca ? * cfsubseq mvf5, ?mvf15, ?mvf10 -000005b4 4e ?33 ?e4 ?e8 ? * cfsubdmi mvd14, ?mvd3, ?mvd8 -000005b8 7e ?31 ?24 ?ec ? * cfsubdvc mvd2, ?mvd1, ?mvd12 -000005bc be ?37 ?04 ?e5 ? * cfsubdlt mvd0, ?mvd7, ?mvd5 -000005c0 3e ?3a ?c4 ?e1 ? * cfsubdcc mvd12, ?mvd10, ?mvd1 -000005c4 ee ?36 ?d4 ?eb ? * cfsubd mvd13, ?mvd6, ?mvd11 -000005c8 2e ?10 ?94 ?05 ? * cfmulscs mvf9, ?mvf0, ?mvf5 -000005cc ae ?14 ?94 ?0e ? * cfmulsge mvf9, ?mvf4, ?mvf14 -000005d0 8e ?17 ?d4 ?02 ? * cfmulshi mvf13, ?mvf7, ?mvf2 -000005d4 ce ?1b ?64 ?00 ? * cfmulsgt mvf6, ?mvf11, ?mvf0 -000005d8 5e ?13 ?e4 ?0c ? * cfmulspl mvf14, ?mvf3, ?mvf12 -000005dc 1e ?1f ?84 ?2d ? * cfmuldne mvd8, ?mvd15, ?mvd13 -000005e0 be ?12 ?44 ?29 ? * cfmuldlt mvd4, ?mvd2, ?mvd9 -000005e4 5e ?1a ?f4 ?29 ? * cfmuldpl mvd15, ?mvd10, ?mvd9 -000005e8 ee ?18 ?34 ?2d ? * cfmuld mvd3, ?mvd8, ?mvd13 -000005ec 2e ?1c ?14 ?26 ? * cfmuldcs mvd1, ?mvd12, ?mvd6 +0*528 4e ?33 ?e4 ?00 ? * cfabssmi mvf14, ?mvf3 +0*52c 8e ?37 ?d4 ?00 ? * cfabsshi mvf13, ?mvf7 +0*530 2e ?3c ?14 ?00 ? * cfabsscs mvf1, ?mvf12 +0*534 6e ?30 ?b4 ?00 ? * cfabssvs mvf11, ?mvf0 +0*538 7e ?3e ?54 ?00 ? * cfabssvc mvf5, ?mvf14 +0*53c 3e ?3a ?c4 ?20 ? * cfabsdcc mvd12, ?mvd10 +0*540 1e ?3f ?84 ?20 ? * cfabsdne mvd8, ?mvd15 +0*544 de ?3b ?64 ?20 ? * cfabsdle mvd6, ?mvd11 +0*548 4e ?39 ?24 ?20 ? * cfabsdmi mvd2, ?mvd9 +0*54c 0e ?3f ?54 ?20 ? * cfabsdeq mvd5, ?mvd15 +0*550 ae ?34 ?94 ?40 ? * cfnegsge mvf9, ?mvf4 +0*554 ee ?38 ?34 ?40 ? * cfnegs mvf3, ?mvf8 +0*558 de ?32 ?74 ?40 ? * cfnegsle mvf7, ?mvf2 +0*55c 1e ?36 ?c4 ?40 ? * cfnegsne mvf12, ?mvf6 +0*560 be ?37 ?04 ?40 ? * cfnegslt mvf0, ?mvf7 +0*564 5e ?33 ?e4 ?60 ? * cfnegdpl mvd14, ?mvd3 +0*568 ce ?31 ?a4 ?60 ? * cfnegdgt mvd10, ?mvd1 +0*56c 8e ?3d ?f4 ?60 ? * cfnegdhi mvd15, ?mvd13 +0*570 6e ?34 ?b4 ?60 ? * cfnegdvs mvd11, ?mvd4 +0*574 2e ?30 ?94 ?60 ? * cfnegdcs mvd9, ?mvd0 +0*578 5e ?3a ?f4 ?89 ? * cfaddspl mvf15, ?mvf10, ?mvf9 +0*57c ee ?38 ?34 ?8d ? * cfadds mvf3, ?mvf8, ?mvf13 +0*580 2e ?3c ?14 ?86 ? * cfaddscs mvf1, ?mvf12, ?mvf6 +0*584 0e ?35 ?74 ?8e ? * cfaddseq mvf7, ?mvf5, ?mvf14 +0*588 ce ?31 ?a4 ?88 ? * cfaddsgt mvf10, ?mvf1, ?mvf8 +0*58c de ?3b ?64 ?a4 ? * cfadddle mvd6, ?mvd11, ?mvd4 +0*590 9e ?35 ?04 ?af ? * cfadddls mvd0, ?mvd5, ?mvd15 +0*594 9e ?3e ?44 ?a3 ? * cfadddls mvd4, ?mvd14, ?mvd3 +0*598 de ?32 ?74 ?a1 ? * cfadddle mvd7, ?mvd2, ?mvd1 +0*59c 6e ?30 ?b4 ?a7 ? * cfadddvs mvd11, ?mvd0, ?mvd7 +0*5a0 ee ?3c ?34 ?ca ? * cfsubs mvf3, ?mvf12, ?mvf10 +0*5a4 8e ?3d ?f4 ?c6 ? * cfsubshi mvf15, ?mvf13, ?mvf6 +0*5a8 4e ?39 ?24 ?c0 ? * cfsubsmi mvf2, ?mvf9, ?mvf0 +0*5ac ee ?39 ?a4 ?c4 ? * cfsubs mvf10, ?mvf9, ?mvf4 +0*5b0 3e ?3d ?84 ?c7 ? * cfsubscc mvf8, ?mvf13, ?mvf7 +0*5b4 1e ?36 ?c4 ?eb ? * cfsubdne mvd12, ?mvd6, ?mvd11 +0*5b8 7e ?3e ?54 ?e3 ? * cfsubdvc mvd5, ?mvd14, ?mvd3 +0*5bc ae ?38 ?14 ?ef ? * cfsubdge mvd1, ?mvd8, ?mvd15 +0*5c0 6e ?34 ?b4 ?e2 ? * cfsubdvs mvd11, ?mvd4, ?mvd2 +0*5c4 0e ?3f ?54 ?ea ? * cfsubdeq mvd5, ?mvd15, ?mvd10 +0*5c8 4e ?13 ?e4 ?08 ? * cfmulsmi mvf14, ?mvf3, ?mvf8 +0*5cc 7e ?11 ?24 ?0c ? * cfmulsvc mvf2, ?mvf1, ?mvf12 +0*5d0 be ?17 ?04 ?05 ? * cfmulslt mvf0, ?mvf7, ?mvf5 +0*5d4 3e ?1a ?c4 ?01 ? * cfmulscc mvf12, ?mvf10, ?mvf1 +0*5d8 ee ?16 ?d4 ?0b ? * cfmuls mvf13, ?mvf6, ?mvf11 +0*5dc 2e ?10 ?94 ?25 ? * cfmuldcs mvd9, ?mvd0, ?mvd5 +0*5e0 ae ?14 ?94 ?2e ? * cfmuldge mvd9, ?mvd4, ?mvd14 +0*5e4 8e ?17 ?d4 ?22 ? * cfmuldhi mvd13, ?mvd7, ?mvd2 +0*5e8 ce ?1b ?64 ?20 ? * cfmuldgt mvd6, ?mvd11, ?mvd0 +0*5ec 5e ?13 ?e4 ?2c ? * cfmuldpl mvd14, ?mvd3, ?mvd12 # int_arith: -000005f0 0e ?35 ?75 ?00 ? * cfabs32eq mvfx7, ?mvfx5 -000005f4 ee ?3c ?35 ?00 ? * cfabs32 mvfx3, ?mvfx12 -000005f8 ae ?38 ?15 ?00 ? * cfabs32ge mvfx1, ?mvfx8 -000005fc ee ?36 ?d5 ?00 ? * cfabs32 mvfx13, ?mvfx6 -00000600 be ?32 ?45 ?00 ? * cfabs32lt mvfx4, ?mvfx2 -00000604 9e ?35 ?05 ?20 ? * cfabs64ls mvdx0, ?mvdx5 -00000608 ee ?39 ?a5 ?20 ? * cfabs64 mvdx10, ?mvdx9 -0000060c 4e ?33 ?e5 ?20 ? * cfabs64mi mvdx14, ?mvdx3 -00000610 8e ?37 ?d5 ?20 ? * cfabs64hi mvdx13, ?mvdx7 -00000614 2e ?3c ?15 ?20 ? * cfabs64cs mvdx1, ?mvdx12 -00000618 6e ?30 ?b5 ?40 ? * cfneg32vs mvfx11, ?mvfx0 -0000061c 7e ?3e ?55 ?40 ? * cfneg32vc mvfx5, ?mvfx14 -00000620 3e ?3a ?c5 ?40 ? * cfneg32cc mvfx12, ?mvfx10 -00000624 1e ?3f ?85 ?40 ? * cfneg32ne mvfx8, ?mvfx15 -00000628 de ?3b ?65 ?40 ? * cfneg32le mvfx6, ?mvfx11 -0000062c 4e ?39 ?25 ?60 ? * cfneg64mi mvdx2, ?mvdx9 -00000630 0e ?3f ?55 ?60 ? * cfneg64eq mvdx5, ?mvdx15 -00000634 ae ?34 ?95 ?60 ? * cfneg64ge mvdx9, ?mvdx4 -00000638 ee ?38 ?35 ?60 ? * cfneg64 mvdx3, ?mvdx8 -0000063c de ?32 ?75 ?60 ? * cfneg64le mvdx7, ?mvdx2 -00000640 1e ?36 ?c5 ?8b ? * cfadd32ne mvfx12, ?mvfx6, ?mvfx11 -00000644 7e ?3e ?55 ?83 ? * cfadd32vc mvfx5, ?mvfx14, ?mvfx3 -00000648 ae ?38 ?15 ?8f ? * cfadd32ge mvfx1, ?mvfx8, ?mvfx15 -0000064c 6e ?34 ?b5 ?82 ? * cfadd32vs mvfx11, ?mvfx4, ?mvfx2 -00000650 0e ?3f ?55 ?8a ? * cfadd32eq mvfx5, ?mvfx15, ?mvfx10 -00000654 4e ?33 ?e5 ?a8 ? * cfadd64mi mvdx14, ?mvdx3, ?mvdx8 -00000658 7e ?31 ?25 ?ac ? * cfadd64vc mvdx2, ?mvdx1, ?mvdx12 -0000065c be ?37 ?05 ?a5 ? * cfadd64lt mvdx0, ?mvdx7, ?mvdx5 -00000660 3e ?3a ?c5 ?a1 ? * cfadd64cc mvdx12, ?mvdx10, ?mvdx1 -00000664 ee ?36 ?d5 ?ab ? * cfadd64 mvdx13, ?mvdx6, ?mvdx11 -00000668 2e ?30 ?95 ?c5 ? * cfsub32cs mvfx9, ?mvfx0, ?mvfx5 -0000066c ae ?34 ?95 ?ce ? * cfsub32ge mvfx9, ?mvfx4, ?mvfx14 -00000670 8e ?37 ?d5 ?c2 ? * cfsub32hi mvfx13, ?mvfx7, ?mvfx2 -00000674 ce ?3b ?65 ?c0 ? * cfsub32gt mvfx6, ?mvfx11, ?mvfx0 -00000678 5e ?33 ?e5 ?cc ? * cfsub32pl mvfx14, ?mvfx3, ?mvfx12 -0000067c 1e ?3f ?85 ?ed ? * cfsub64ne mvdx8, ?mvdx15, ?mvdx13 -00000680 be ?32 ?45 ?e9 ? * cfsub64lt mvdx4, ?mvdx2, ?mvdx9 -00000684 5e ?3a ?f5 ?e9 ? * cfsub64pl mvdx15, ?mvdx10, ?mvdx9 -00000688 ee ?38 ?35 ?ed ? * cfsub64 mvdx3, ?mvdx8, ?mvdx13 -0000068c 2e ?3c ?15 ?e6 ? * cfsub64cs mvdx1, ?mvdx12, ?mvdx6 -00000690 0e ?15 ?75 ?0e ? * cfmul32eq mvfx7, ?mvfx5, ?mvfx14 -00000694 ce ?11 ?a5 ?08 ? * cfmul32gt mvfx10, ?mvfx1, ?mvfx8 -00000698 de ?1b ?65 ?04 ? * cfmul32le mvfx6, ?mvfx11, ?mvfx4 -0000069c 9e ?15 ?05 ?0f ? * cfmul32ls mvfx0, ?mvfx5, ?mvfx15 -000006a0 9e ?1e ?45 ?03 ? * cfmul32ls mvfx4, ?mvfx14, ?mvfx3 -000006a4 de ?12 ?75 ?21 ? * cfmul64le mvdx7, ?mvdx2, ?mvdx1 -000006a8 6e ?10 ?b5 ?27 ? * cfmul64vs mvdx11, ?mvdx0, ?mvdx7 -000006ac ee ?1c ?35 ?2a ? * cfmul64 mvdx3, ?mvdx12, ?mvdx10 -000006b0 8e ?1d ?f5 ?26 ? * cfmul64hi mvdx15, ?mvdx13, ?mvdx6 -000006b4 4e ?19 ?25 ?20 ? * cfmul64mi mvdx2, ?mvdx9, ?mvdx0 -000006b8 ee ?19 ?a5 ?44 ? * cfmac32 mvfx10, ?mvfx9, ?mvfx4 -000006bc 3e ?1d ?85 ?47 ? * cfmac32cc mvfx8, ?mvfx13, ?mvfx7 -000006c0 1e ?16 ?c5 ?4b ? * cfmac32ne mvfx12, ?mvfx6, ?mvfx11 -000006c4 7e ?1e ?55 ?43 ? * cfmac32vc mvfx5, ?mvfx14, ?mvfx3 -000006c8 ae ?18 ?15 ?4f ? * cfmac32ge mvfx1, ?mvfx8, ?mvfx15 -000006cc 6e ?14 ?b5 ?62 ? * cfmsc32vs mvfx11, ?mvfx4, ?mvfx2 -000006d0 0e ?1f ?55 ?6a ? * cfmsc32eq mvfx5, ?mvfx15, ?mvfx10 -000006d4 4e ?13 ?e5 ?68 ? * cfmsc32mi mvfx14, ?mvfx3, ?mvfx8 -000006d8 7e ?11 ?25 ?6c ? * cfmsc32vc mvfx2, ?mvfx1, ?mvfx12 -000006dc be ?17 ?05 ?65 ? * cfmsc32lt mvfx0, ?mvfx7, ?mvfx5 +0*5f0 1e ?3f ?85 ?00 ? * cfabs32ne mvfx8, ?mvfx15 +0*5f4 de ?3b ?65 ?00 ? * cfabs32le mvfx6, ?mvfx11 +0*5f8 4e ?39 ?25 ?00 ? * cfabs32mi mvfx2, ?mvfx9 +0*5fc 0e ?3f ?55 ?00 ? * cfabs32eq mvfx5, ?mvfx15 +0*600 ae ?34 ?95 ?00 ? * cfabs32ge mvfx9, ?mvfx4 +0*604 ee ?38 ?35 ?20 ? * cfabs64 mvdx3, ?mvdx8 +0*608 de ?32 ?75 ?20 ? * cfabs64le mvdx7, ?mvdx2 +0*60c 1e ?36 ?c5 ?20 ? * cfabs64ne mvdx12, ?mvdx6 +0*610 be ?37 ?05 ?20 ? * cfabs64lt mvdx0, ?mvdx7 +0*614 5e ?33 ?e5 ?20 ? * cfabs64pl mvdx14, ?mvdx3 +0*618 ce ?31 ?a5 ?40 ? * cfneg32gt mvfx10, ?mvfx1 +0*61c 8e ?3d ?f5 ?40 ? * cfneg32hi mvfx15, ?mvfx13 +0*620 6e ?34 ?b5 ?40 ? * cfneg32vs mvfx11, ?mvfx4 +0*624 2e ?30 ?95 ?40 ? * cfneg32cs mvfx9, ?mvfx0 +0*628 5e ?3a ?f5 ?40 ? * cfneg32pl mvfx15, ?mvfx10 +0*62c 9e ?3e ?45 ?60 ? * cfneg64ls mvdx4, ?mvdx14 +0*630 3e ?3d ?85 ?60 ? * cfneg64cc mvdx8, ?mvdx13 +0*634 7e ?31 ?25 ?60 ? * cfneg64vc mvdx2, ?mvdx1 +0*638 ce ?3b ?65 ?60 ? * cfneg64gt mvdx6, ?mvdx11 +0*63c 0e ?35 ?75 ?60 ? * cfneg64eq mvdx7, ?mvdx5 +0*640 ee ?3c ?35 ?8a ? * cfadd32 mvfx3, ?mvfx12, ?mvfx10 +0*644 8e ?3d ?f5 ?86 ? * cfadd32hi mvfx15, ?mvfx13, ?mvfx6 +0*648 4e ?39 ?25 ?80 ? * cfadd32mi mvfx2, ?mvfx9, ?mvfx0 +0*64c ee ?39 ?a5 ?84 ? * cfadd32 mvfx10, ?mvfx9, ?mvfx4 +0*650 3e ?3d ?85 ?87 ? * cfadd32cc mvfx8, ?mvfx13, ?mvfx7 +0*654 1e ?36 ?c5 ?ab ? * cfadd64ne mvdx12, ?mvdx6, ?mvdx11 +0*658 7e ?3e ?55 ?a3 ? * cfadd64vc mvdx5, ?mvdx14, ?mvdx3 +0*65c ae ?38 ?15 ?af ? * cfadd64ge mvdx1, ?mvdx8, ?mvdx15 +0*660 6e ?34 ?b5 ?a2 ? * cfadd64vs mvdx11, ?mvdx4, ?mvdx2 +0*664 0e ?3f ?55 ?aa ? * cfadd64eq mvdx5, ?mvdx15, ?mvdx10 +0*668 4e ?33 ?e5 ?c8 ? * cfsub32mi mvfx14, ?mvfx3, ?mvfx8 +0*66c 7e ?31 ?25 ?cc ? * cfsub32vc mvfx2, ?mvfx1, ?mvfx12 +0*670 be ?37 ?05 ?c5 ? * cfsub32lt mvfx0, ?mvfx7, ?mvfx5 +0*674 3e ?3a ?c5 ?c1 ? * cfsub32cc mvfx12, ?mvfx10, ?mvfx1 +0*678 ee ?36 ?d5 ?cb ? * cfsub32 mvfx13, ?mvfx6, ?mvfx11 +0*67c 2e ?30 ?95 ?e5 ? * cfsub64cs mvdx9, ?mvdx0, ?mvdx5 +0*680 ae ?34 ?95 ?ee ? * cfsub64ge mvdx9, ?mvdx4, ?mvdx14 +0*684 8e ?37 ?d5 ?e2 ? * cfsub64hi mvdx13, ?mvdx7, ?mvdx2 +0*688 ce ?3b ?65 ?e0 ? * cfsub64gt mvdx6, ?mvdx11, ?mvdx0 +0*68c 5e ?33 ?e5 ?ec ? * cfsub64pl mvdx14, ?mvdx3, ?mvdx12 +0*690 1e ?1f ?85 ?0d ? * cfmul32ne mvfx8, ?mvfx15, ?mvfx13 +0*694 be ?12 ?45 ?09 ? * cfmul32lt mvfx4, ?mvfx2, ?mvfx9 +0*698 5e ?1a ?f5 ?09 ? * cfmul32pl mvfx15, ?mvfx10, ?mvfx9 +0*69c ee ?18 ?35 ?0d ? * cfmul32 mvfx3, ?mvfx8, ?mvfx13 +0*6a0 2e ?1c ?15 ?06 ? * cfmul32cs mvfx1, ?mvfx12, ?mvfx6 +0*6a4 0e ?15 ?75 ?2e ? * cfmul64eq mvdx7, ?mvdx5, ?mvdx14 +0*6a8 ce ?11 ?a5 ?28 ? * cfmul64gt mvdx10, ?mvdx1, ?mvdx8 +0*6ac de ?1b ?65 ?24 ? * cfmul64le mvdx6, ?mvdx11, ?mvdx4 +0*6b0 9e ?15 ?05 ?2f ? * cfmul64ls mvdx0, ?mvdx5, ?mvdx15 +0*6b4 9e ?1e ?45 ?23 ? * cfmul64ls mvdx4, ?mvdx14, ?mvdx3 +0*6b8 de ?12 ?75 ?41 ? * cfmac32le mvfx7, ?mvfx2, ?mvfx1 +0*6bc 6e ?10 ?b5 ?47 ? * cfmac32vs mvfx11, ?mvfx0, ?mvfx7 +0*6c0 ee ?1c ?35 ?4a ? * cfmac32 mvfx3, ?mvfx12, ?mvfx10 +0*6c4 8e ?1d ?f5 ?46 ? * cfmac32hi mvfx15, ?mvfx13, ?mvfx6 +0*6c8 4e ?19 ?25 ?40 ? * cfmac32mi mvfx2, ?mvfx9, ?mvfx0 +0*6cc ee ?19 ?a5 ?64 ? * cfmsc32 mvfx10, ?mvfx9, ?mvfx4 +0*6d0 3e ?1d ?85 ?67 ? * cfmsc32cc mvfx8, ?mvfx13, ?mvfx7 +0*6d4 1e ?16 ?c5 ?6b ? * cfmsc32ne mvfx12, ?mvfx6, ?mvfx11 +0*6d8 7e ?1e ?55 ?63 ? * cfmsc32vc mvfx5, ?mvfx14, ?mvfx3 +0*6dc ae ?18 ?15 ?6f ? * cfmsc32ge mvfx1, ?mvfx8, ?mvfx15 # acc_arith: -000006e0 3e ?01 ?a6 ?08 ? * cfmadd32cc mvax0, ?mvfx10, ?mvfx1, ?mvfx8 -000006e4 ee ?0b ?66 ?44 ? * cfmadd32 mvax2, ?mvfx6, ?mvfx11, ?mvfx4 -000006e8 2e ?05 ?06 ?2f ? * cfmadd32cs mvax1, ?mvfx0, ?mvfx5, ?mvfx15 -000006ec ae ?0e ?46 ?43 ? * cfmadd32ge mvax2, ?mvfx4, ?mvfx14, ?mvfx3 -000006f0 8e ?02 ?76 ?61 ? * cfmadd32hi mvax3, ?mvfx7, ?mvfx2, ?mvfx1 -000006f4 ce ?10 ?b6 ?07 ? * cfmsub32gt mvax0, ?mvfx11, ?mvfx0, ?mvfx7 -000006f8 5e ?1c ?36 ?4a ? * cfmsub32pl mvax2, ?mvfx3, ?mvfx12, ?mvfx10 -000006fc 1e ?1d ?f6 ?26 ? * cfmsub32ne mvax1, ?mvfx15, ?mvfx13, ?mvfx6 -00000700 be ?19 ?26 ?40 ? * cfmsub32lt mvax2, ?mvfx2, ?mvfx9, ?mvfx0 -00000704 5e ?19 ?a6 ?64 ? * cfmsub32pl mvax3, ?mvfx10, ?mvfx9, ?mvfx4 -00000708 ee ?2d ?16 ?67 ? * cfmadda32 mvax3, ?mvax1, ?mvfx13, ?mvfx7 -0000070c 2e ?26 ?26 ?6b ? * cfmadda32cs mvax3, ?mvax2, ?mvfx6, ?mvfx11 -00000710 0e ?2e ?36 ?23 ? * cfmadda32eq mvax1, ?mvax3, ?mvfx14, ?mvfx3 -00000714 ce ?28 ?36 ?2f ? * cfmadda32gt mvax1, ?mvax3, ?mvfx8, ?mvfx15 -00000718 de ?24 ?36 ?02 ? * cfmadda32le mvax0, ?mvax3, ?mvfx4, ?mvfx2 -0000071c 9e ?3f ?16 ?0a ? * cfmsuba32ls mvax0, ?mvax1, ?mvfx15, ?mvfx10 -00000720 9e ?33 ?16 ?08 ? * cfmsuba32ls mvax0, ?mvax1, ?mvfx3, ?mvfx8 -00000724 de ?31 ?06 ?4c ? * cfmsuba32le mvax2, ?mvax0, ?mvfx1, ?mvfx12 -00000728 6e ?37 ?06 ?25 ? * cfmsuba32vs mvax1, ?mvax0, ?mvfx7, ?mvfx5 -0000072c ee ?3a ?06 ?41 ? * cfmsuba32 mvax2, ?mvax0, ?mvfx10, ?mvfx1 +0*6e0 6e ?02 ?46 ?69 ? * cfmadd32vs mvax3, ?mvfx4, ?mvfx2, ?mvfx9 +0*6e4 0e ?0a ?f6 ?29 ? * cfmadd32eq mvax1, ?mvfx15, ?mvfx10, ?mvfx9 +0*6e8 4e ?08 ?36 ?2d ? * cfmadd32mi mvax1, ?mvfx3, ?mvfx8, ?mvfx13 +0*6ec 7e ?0c ?16 ?06 ? * cfmadd32vc mvax0, ?mvfx1, ?mvfx12, ?mvfx6 +0*6f0 be ?05 ?76 ?0e ? * cfmadd32lt mvax0, ?mvfx7, ?mvfx5, ?mvfx14 +0*6f4 3e ?11 ?a6 ?08 ? * cfmsub32cc mvax0, ?mvfx10, ?mvfx1, ?mvfx8 +0*6f8 ee ?1b ?66 ?44 ? * cfmsub32 mvax2, ?mvfx6, ?mvfx11, ?mvfx4 +0*6fc 2e ?15 ?06 ?2f ? * cfmsub32cs mvax1, ?mvfx0, ?mvfx5, ?mvfx15 +0*700 ae ?1e ?46 ?43 ? * cfmsub32ge mvax2, ?mvfx4, ?mvfx14, ?mvfx3 +0*704 8e ?12 ?76 ?61 ? * cfmsub32hi mvax3, ?mvfx7, ?mvfx2, ?mvfx1 +0*708 ce ?20 ?16 ?07 ? * cfmadda32gt mvax0, ?mvax1, ?mvfx0, ?mvfx7 +0*70c 5e ?2c ?26 ?4a ? * cfmadda32pl mvax2, ?mvax2, ?mvfx12, ?mvfx10 +0*710 1e ?2d ?36 ?26 ? * cfmadda32ne mvax1, ?mvax3, ?mvfx13, ?mvfx6 +0*714 be ?29 ?06 ?40 ? * cfmadda32lt mvax2, ?mvax0, ?mvfx9, ?mvfx0 +0*718 5e ?29 ?26 ?64 ? * cfmadda32pl mvax3, ?mvax2, ?mvfx9, ?mvfx4 +0*71c ee ?3d ?16 ?67 ? * cfmsuba32 mvax3, ?mvax1, ?mvfx13, ?mvfx7 +0*720 2e ?36 ?26 ?6b ? * cfmsuba32cs mvax3, ?mvax2, ?mvfx6, ?mvfx11 +0*724 0e ?3e ?36 ?23 ? * cfmsuba32eq mvax1, ?mvax3, ?mvfx14, ?mvfx3 +0*728 ce ?38 ?36 ?2f ? * cfmsuba32gt mvax1, ?mvax3, ?mvfx8, ?mvfx15 +0*72c de ?34 ?36 ?02 ? * cfmsuba32le mvax0, ?mvax3, ?mvfx4, ?mvfx2 -- 2.30.2