This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi Maciej: Thanks for your kind comments. > 1 out of 1 hunk FAILED -- saving rejects to file gas/testsuite/gas/mips/loongson-3a.d.rej > 1 out of 1 hunk FAILED -- saving rejects to file gas/testsuite/gas/mips/loongson-3a.s.rej The patch just from git format-patch command, > Also I don't see any earlier changes from you in binutils and this change > is substantial enough to require a copyright arrangement with FSF before > it can be accepted. Do you have one in place? I have been signed binutils copyright assignment with FSF, but no write access yet. > > This patch split Loongson MultiMedia extensions Instructions (MMI) > > from loongson2f/3a. > > The MMI instructions set has been implemented in many loongson > > processors. I'd like to split it > > from loongson2f/3a and give it a name MMI. Even though i know that the > > R5900 used the name MMI > > in mips-opc.c, I also prefer the name MMI for those instructions. > > There are a lot of software has optimized > > with MMI,like pixman[1], FFmpeg[2]. > > > > [1]https://cgit.freedesktop.org/pixman/commit/?id=c78e986085 > > [2]http://ffmpeg.org/pipermail/ffmpeg-cvslog/2015-July/091449.html > > Do you intend this text to become the commit description in the > repository? If so, then please reformat it as a proper paragraph, > observing the 74-column limit and placing two spaces after full stops. No, that just explain why use mmi. > 2018-07-13 please (or whatever date that will be). Also please use > a leading tab with ChangeLog entries, to ensure consistent formatting > between the change description and actual ChangeLog file contents. Done. > > (mips_cpu_info_table):Add ASE_MMI for loongs2f/3a Done. > Missing space after `:' and a full stop at the end; also `loongson2f/3a' > I suppose. Done. > > * testsuite/gas/mips/loongso2f.d: Move mmi test to ... > > * testsuite/gas/mips/loongso2f-mmi.d: Here. > > * testsuite/gas/mips/loongso2f.s: Move mmi test to ... > > * testsuite/gas/mips/loongso2f-mmi.s: Here. > > * testsuite/gas/mips/loongso3a.d: Move mmi test to ... > > * testsuite/gas/mips/loongso3a-mmi.d: Here. > > * testsuite/gas/mips/loongso3a.s: Move mmi test to ... > > * testsuite/gas/mips/loongso3a-mmi.s: Here. > > * testsuite/gas/mips/mips.exp: involved > > loongso2f-mmi and loongso3a-mmi test. > > Typos: s/loongso/loongson-/g. Also bad style and formatting in the last > line, perhaps: > > * testsuite/gas/mips/mips.exp: Run loongson-2f-mmi and > loongson-3a-mmi tests. Done. > > > include/ > > * elf/mips.h (AFL_ASE_MMI): New macros. > > "New macro." > > > * mips-opc.c(LMMI): New macro. > > Missing space before the opening parenthesis. > > > (mips_opcodes): Split mmi for loongson2f/3a. > > Maybe: > > (mips_opcodes): Replace IL2F|IL3A marking with LMMI for MMI > instructions. Done. > > diff --git a/gas/doc/as.texi b/gas/doc/as.texi > > index 49b1ef1..b2afcd1 100644 > > --- a/gas/doc/as.texi > > +++ b/gas/doc/as.texi > > @@ -1526,6 +1527,13 @@ Generate code for the Global INValidate (GINV) Application Specific > > Extension. This tells the assembler to accept GINV instructions. > > @samp{-mno-ginv} turns off this option. > > > > +@item -mmmi > > +@itemx -mno-mmi > > +Generate code for the Loongson MultiMedia extensions Instructions (MMI) > > +Application Specific Extension. This tells the assembler to accept MMI > > Two spaces after a full stop please. Done. > > diff --git a/gas/doc/c-mips.texi b/gas/doc/c-mips.texi > > index 24f6843..f01024a 100644 > > --- a/gas/doc/c-mips.texi > > +++ b/gas/doc/c-mips.texi > > @@ -246,6 +246,13 @@ Generate code for the Global INValidate (GINV) Application Specific > > Extension. This tells the assembler to accept GINV instructions. > > @samp{-mno-ginv} turns off this option. > > > > +@item -mmmi > > +@itemx -mno-mmi > > +Generate code for the Loongson MultiMedia extensions Instructions (MMI) > > +Application Specific Extension. This tells the assembler to accept MMI > > Likewise. Done. > > + > > + > > Trailing empty lines. > All done. > > diff --git a/include/opcode/mips.h b/include/opcode/mips.h > > index 1ab1780..1d0998c 100644 > > --- a/include/opcode/mips.h > > +++ b/include/opcode/mips.h > > @@ -1302,6 +1302,8 @@ static const unsigned int mips_isa_table[] = { > > #define ASE_CRC64 0x00080000 > > /* Global INValidate Extension. */ > > #define ASE_GINV 0x00100000 > > +/* Loongson MultiMedia extensions Instructions (MMI). */ > > Two spaces after a full stop please. Done. > > +#define ASE_MMI 0x00200000 > > > > /* MIPS ISA defines, use instead of hardcoding ISA level. */ > > > > diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c > > index bbf2132..b9fd9e5 100644 > > --- a/opcodes/mips-dis.c > > +++ b/opcodes/mips-dis.c > > @@ -626,11 +626,11 @@ const struct mips_arch_choice mips_arch_choices[] = > > NULL, 0, mips_cp1_names_numeric, mips_hwr_names_numeric }, > > > > { "loongson2f", 1, bfd_mach_mips_loongson_2f, CPU_LOONGSON_2F, > > - ISA_MIPS3 | INSN_LOONGSON_2F, 0, mips_cp0_names_numeric, > > + ISA_MIPS3 | ASE_MMI, 0, mips_cp0_names_numeric, > > NULL, 0, mips_cp1_names_numeric, mips_hwr_names_numeric }, > > > > { "loongson3a", 1, bfd_mach_mips_loongson_3a, CPU_LOONGSON_3A, > > - ISA_MIPS64R2 | INSN_LOONGSON_3A, 0, mips_cp0_names_numeric, > > + ISA_MIPS64R2 | ASE_MMI, 0, mips_cp0_names_numeric, > > NULL, 0, mips_cp1_names_mips3264, mips_hwr_names_numeric }, > > Why do you remove INSN_LOONGSON_2F and INSN_LOONGSON_3A flags? AFAICT > the MMI instructions are not the only ones these processors have? Fixed. > > diff --git a/opcodes/mips-opc.c b/opcodes/mips-opc.c > > index 1cbcbc6..0dc15f9 100644 > > --- a/opcodes/mips-opc.c > > +++ b/opcodes/mips-opc.c > > @@ -412,6 +412,9 @@ decode_mips_operand (const char *p) > > /* Global INValidate (GINV) support. */ > > #define GINV ASE_GINV > > > > +/* Loongson MultiMedia extensions Instructions (MMI) support. */ > > Two spaces after a full stop please. > > Please resubmit with these issues addressed, and, as noted at the top, > explain your copyright status with FSF. > > Maciej
Attachment:
binutils-add-loongson-mmi-support-changelog.txt
Description: Text document
--- bfd/elfxx-mips.c | 2 + binutils/readelf.c | 2 + gas/NEWS | 3 + gas/config/tc-mips.c | 18 ++++- gas/doc/as.texi | 8 +++ gas/doc/c-mips.texi | 14 ++++ gas/testsuite/gas/mips/loongson-2f-mmi.d | 68 ++++++++++++++++++ gas/testsuite/gas/mips/loongson-2f-mmi.s | 62 ++++++++++++++++ gas/testsuite/gas/mips/loongson-2f.d | 62 +--------------- gas/testsuite/gas/mips/loongson-2f.s | 60 ---------------- gas/testsuite/gas/mips/loongson-3a-mmi.d | 68 ++++++++++++++++++ gas/testsuite/gas/mips/loongson-3a-mmi.s | 62 ++++++++++++++++ gas/testsuite/gas/mips/loongson-3a.d | 60 ---------------- gas/testsuite/gas/mips/loongson-3a.s | 60 ---------------- gas/testsuite/gas/mips/mips.exp | 3 + include/elf/mips.h | 3 +- include/opcode/mips.h | 2 + opcodes/mips-dis.c | 13 +++- opcodes/mips-opc.c | 119 ++++++++++++++++--------------- 19 files changed, 385 insertions(+), 304 deletions(-) create mode 100644 gas/testsuite/gas/mips/loongson-2f-mmi.d create mode 100644 gas/testsuite/gas/mips/loongson-2f-mmi.s create mode 100644 gas/testsuite/gas/mips/loongson-3a-mmi.d create mode 100644 gas/testsuite/gas/mips/loongson-3a-mmi.s diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index d919423..01cf804 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -15673,6 +15673,8 @@ print_mips_ases (FILE *file, unsigned int mask) fputs ("\n\tCRC ASE", file); if (mask & AFL_ASE_GINV) fputs ("\n\tGINV ASE", file); + if (mask & AFL_ASE_MMI) + fputs ("\n\tMMI ASE", file); if (mask == 0) fprintf (file, "\n\t%s", _("None")); else if ((mask & ~AFL_ASE_MASK) != 0) diff --git a/binutils/readelf.c b/binutils/readelf.c index 7716381..53cd8ed 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -15583,6 +15583,8 @@ print_mips_ases (unsigned int mask) fputs ("\n\tCRC ASE", stdout); if (mask & AFL_ASE_GINV) fputs ("\n\tGINV ASE", stdout); + if (mask & AFL_ASE_MMI) + fputs ("\n\tMMI ASE", stdout); if (mask == 0) fprintf (stdout, "\n\t%s", _("None")); else if ((mask & ~AFL_ASE_MASK) != 0) diff --git a/gas/NEWS b/gas/NEWS index 5fd844c..c7d9332 100644 --- a/gas/NEWS +++ b/gas/NEWS @@ -1,5 +1,8 @@ -*- text -*- +* Add support for the MIPS Loongson MultiMedia extensions Instructions (MMI) + ASE. + Changes in 2.31: * The ADR and ADRL pseudo-instructions supported by the ARM assembler diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 59df787..f08e33e 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -1529,6 +1529,8 @@ enum options OPTION_NO_ODD_SPREG, OPTION_GINV, OPTION_NO_GINV, + OPTION_MMI, + OPTION_NO_MMI, OPTION_END_OF_ENUM }; @@ -1589,6 +1591,8 @@ struct option md_longopts[] = {"mno-crc", no_argument, NULL, OPTION_NO_CRC}, {"mginv", no_argument, NULL, OPTION_GINV}, {"mno-ginv", no_argument, NULL, OPTION_NO_GINV}, + {"mmmi", no_argument, NULL, OPTION_MMI}, + {"mno-mmi", no_argument, NULL, OPTION_NO_MMI}, /* Old-style architecture options. Don't add more of these. */ {"m4650", no_argument, NULL, OPTION_M4650}, @@ -1786,6 +1790,11 @@ static const struct mips_ase mips_ases[] = { OPTION_GINV, OPTION_NO_GINV, 6, 6, 6, 6, -1 }, + + { "mmi", ASE_MMI, 0, + OPTION_MMI, OPTION_NO_MMI, + 0, 0, -1, -1, + -1 }, }; /* The set of ASEs that require -mfp64. */ @@ -19017,6 +19026,8 @@ mips_convert_ase_flags (int ase) ext_ases |= AFL_ASE_CRC; if (ase & ASE_GINV) ext_ases |= AFL_ASE_GINV; + if (ase & ASE_MMI) + ext_ases |= AFL_ASE_MMI; return ext_ases; } @@ -19663,7 +19674,7 @@ static const struct mips_cpu_info mips_cpu_info_table[] = { "r5900", 0, 0, ISA_MIPS3, CPU_R5900 }, /* ST Microelectronics Loongson 2E and 2F cores */ { "loongson2e", 0, 0, ISA_MIPS3, CPU_LOONGSON_2E }, - { "loongson2f", 0, 0, ISA_MIPS3, CPU_LOONGSON_2F }, + { "loongson2f", 0, ASE_MMI, ISA_MIPS3, CPU_LOONGSON_2F }, /* MIPS IV */ { "r8000", 0, 0, ISA_MIPS4, CPU_R8000 }, @@ -19762,7 +19773,7 @@ static const struct mips_cpu_info mips_cpu_info_table[] = /* Broadcom SB-1A CPU core */ { "sb1a", 0, ASE_MIPS3D | ASE_MDMX, ISA_MIPS64, CPU_SB1 }, - { "loongson3a", 0, 0, ISA_MIPS64R2, CPU_LOONGSON_3A }, + { "loongson3a", 0, ASE_MMI, ISA_MIPS64R2, CPU_LOONGSON_3A }, /* MIPS 64 Release 2 */ @@ -20037,6 +20048,9 @@ MIPS options:\n\ -mginv generate Global INValidate (GINV) instructions\n\ -mno-ginv do not generate Global INValidate instructions\n")); fprintf (stream, _("\ +-mmmi generate Loongson MultiMedia extensions Instructions (MMI) instructions\n\ +-mno-mmi do not generate Loongson MultiMedia extensions Instructions\n")); + fprintf (stream, _("\ -minsn32 only generate 32-bit microMIPS instructions\n\ -mno-insn32 generate all microMIPS instructions\n")); fprintf (stream, _("\ diff --git a/gas/doc/as.texi b/gas/doc/as.texi index 49b1ef1..3387766 100644 --- a/gas/doc/as.texi +++ b/gas/doc/as.texi @@ -424,6 +424,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}. [@b{-mmcu}] [@b{-mno-mcu}] [@b{-mcrc}] [@b{-mno-crc}] [@b{-mginv}] [@b{-mno-ginv}] + [@b{-mmmi}] [@b{-mno-gmmi}] [@b{-minsn32}] [@b{-mno-insn32}] [@b{-mfix7000}] [@b{-mno-fix7000}] [@b{-mfix-rm7000}] [@b{-mno-fix-rm7000}] @@ -1526,6 +1527,13 @@ Generate code for the Global INValidate (GINV) Application Specific Extension. This tells the assembler to accept GINV instructions. @samp{-mno-ginv} turns off this option. +@item -mmmi +@itemx -mno-mmi +Generate code for the Loongson MultiMedia extensions Instructions (MMI) +Application Specific Extension. This tells the assembler to accept MMI +instructions. +@samp{-mno-mmi} turns off this option. + @item -minsn32 @itemx -mno-insn32 Only use 32-bit instruction encodings when generating code for the diff --git a/gas/doc/c-mips.texi b/gas/doc/c-mips.texi index 24f6843..2338b3b 100644 --- a/gas/doc/c-mips.texi +++ b/gas/doc/c-mips.texi @@ -246,6 +246,13 @@ Generate code for the Global INValidate (GINV) Application Specific Extension. This tells the assembler to accept GINV instructions. @samp{-mno-ginv} turns off this option. +@item -mmmi +@itemx -mno-mmi +Generate code for the Loongson MultiMedia extensions Instructions (MMI) +Application Specific Extension. This tells the assembler to accept MMI +instructions. +@samp{-mno-mmi} turns off this option. + @item -minsn32 @itemx -mno-insn32 Only use 32-bit instruction encodings when generating code for the @@ -1137,6 +1144,13 @@ The directive @code{.set ginv} makes the assembler accept instructions from the GINV Extension from that point on in the assembly. The @code{.set noginv} directive prevents GINV instructions from being accepted. +@cindex Loongson MultiMedia extensions Instructions (MMI) generation override +@kindex @code{.set mmi} +@kindex @code{.set nommi} +The directive @code{.set mmi} makes the assembler accept instructions +from the MMI Extension from that point on in the assembly. The +@code{.set nommi} directive prevents MMI instructions from being accepted. + Traditional MIPS assemblers do not support these directives. @node MIPS Floating-Point diff --git a/gas/testsuite/gas/mips/loongson-2f-mmi.d b/gas/testsuite/gas/mips/loongson-2f-mmi.d new file mode 100644 index 0000000..3a3ad36 --- /dev/null +++ b/gas/testsuite/gas/mips/loongson-2f-mmi.d @@ -0,0 +1,68 @@ +#as: -march=loongson2f -mabi=o64 +#objdump: -M reg-names=numeric -M mmi -dr +#name: Loongson-2F mmi tests + +.*: file format .* + +Disassembly of section .text: + +[0-9a-f]+ <simd_insns>: +.*: 4b420802 packsshb \$f0,\$f1,\$f2 +.*: 4b2520c2 packsswh \$f3,\$f4,\$f5 +.*: 4b683982 packushb \$f6,\$f7,\$f8 +.*: 4bcb5240 paddb \$f9,\$f10,\$f11 +.*: 4b4e6b00 paddh \$f12,\$f13,\$f14 +.*: 4b7183c0 paddw \$f15,\$f16,\$f17 +.*: 4bf49c80 paddd \$f18,\$f19,\$f20 +.*: 4b97b540 paddsb \$f21,\$f22,\$f23 +.*: 4b1ace00 paddsh \$f24,\$f25,\$f26 +.*: 4bbde6c0 paddusb \$f27,\$f28,\$f29 +.*: 4b220800 paddush \$f0,\$f1,\$f2 +.*: 4be520c2 pandn \$f3,\$f4,\$f5 +.*: 4b283988 pavgb \$f6,\$f7,\$f8 +.*: 4b0b5248 pavgh \$f9,\$f10,\$f11 +.*: 4b8e6b09 pcmpeqb \$f12,\$f13,\$f14 +.*: 4b5183c9 pcmpeqh \$f15,\$f16,\$f17 +.*: 4b149c89 pcmpeqw \$f18,\$f19,\$f20 +.*: 4bb7b549 pcmpgtb \$f21,\$f22,\$f23 +.*: 4b7ace09 pcmpgth \$f24,\$f25,\$f26 +.*: 4b3de6c9 pcmpgtw \$f27,\$f28,\$f29 +.*: 4b42080e pextrh \$f0,\$f1,\$f2 +.*: 4b8520c3 pinsrh_0 \$f3,\$f4,\$f5 +.*: 4ba83983 pinsrh_1 \$f6,\$f7,\$f8 +.*: 4bcb5243 pinsrh_2 \$f9,\$f10,\$f11 +.*: 4bee6b03 pinsrh_3 \$f12,\$f13,\$f14 +.*: 4b7183ce pmaddhw \$f15,\$f16,\$f17 +.*: 4b549c88 pmaxsh \$f18,\$f19,\$f20 +.*: 4b97b548 pmaxub \$f21,\$f22,\$f23 +.*: 4b7ace08 pminsh \$f24,\$f25,\$f26 +.*: 4bbde6c8 pminub \$f27,\$f28,\$f29 +.*: 4ba0080f pmovmskb \$f0,\$f1 +.*: 4ba4188a pmulhuh \$f2,\$f3,\$f4 +.*: 4b67314a pmulhh \$f5,\$f6,\$f7 +.*: 4b4a4a0a pmullh \$f8,\$f9,\$f10 +.*: 4b8d62ca pmuluw \$f11,\$f12,\$f13 +.*: 4b307b8d pasubub \$f14,\$f15,\$f16 +.*: 4b80944f biadd \$f17,\$f18 +.*: 4b15a4c2 pshufh \$f19,\$f20,\$f21 +.*: 4b38bd8a psllh \$f22,\$f23,\$f24 +.*: 4b1bd64a psllw \$f25,\$f26,\$f27 +.*: 4b7eef0b psrah \$f28,\$f29,\$f30 +.*: 4b42080b psraw \$f0,\$f1,\$f2 +.*: 4b2520cb psrlh \$f3,\$f4,\$f5 +.*: 4b08398b psrlw \$f6,\$f7,\$f8 +.*: 4bcb5241 psubb \$f9,\$f10,\$f11 +.*: 4b4e6b01 psubh \$f12,\$f13,\$f14 +.*: 4b7183c1 psubw \$f15,\$f16,\$f17 +.*: 4bf49c81 psubd \$f18,\$f19,\$f20 +.*: 4b97b541 psubsb \$f21,\$f22,\$f23 +.*: 4b1ace01 psubsh \$f24,\$f25,\$f26 +.*: 4bbde6c1 psubusb \$f27,\$f28,\$f29 +.*: 4b220801 psubush \$f0,\$f1,\$f2 +.*: 4b6520c3 punpckhbh \$f3,\$f4,\$f5 +.*: 4b283983 punpckhhw \$f6,\$f7,\$f8 +.*: 4bab524b punpckhwd \$f9,\$f10,\$f11 +.*: 4b4e6b03 punpcklbh \$f12,\$f13,\$f14 +.*: 4b1183c3 punpcklhw \$f15,\$f16,\$f17 +.*: 4b949c8b punpcklwd \$f18,\$f19,\$f20 +#pass diff --git a/gas/testsuite/gas/mips/loongson-2f-mmi.s b/gas/testsuite/gas/mips/loongson-2f-mmi.s new file mode 100644 index 0000000..ea9db54 --- /dev/null +++ b/gas/testsuite/gas/mips/loongson-2f-mmi.s @@ -0,0 +1,62 @@ + .text + .set noreorder + +simd_insns: + packsshb $f0, $f1, $f2 + packsswh $f3, $f4, $f5 + packushb $f6, $f7, $f8 + paddb $f9, $f10, $f11 + paddh $f12, $f13, $f14 + paddw $f15, $f16, $f17 + paddd $f18, $f19, $f20 + paddsb $f21, $f22, $f23 + paddsh $f24, $f25, $f26 + paddusb $f27, $f28, $f29 + paddush $f0, $f1, $f2 + pandn $f3, $f4, $f5 + pavgb $f6, $f7, $f8 + pavgh $f9, $f10, $f11 + pcmpeqb $f12, $f13, $f14 + pcmpeqh $f15, $f16, $f17 + pcmpeqw $f18, $f19, $f20 + pcmpgtb $f21, $f22, $f23 + pcmpgth $f24, $f25, $f26 + pcmpgtw $f27, $f28, $f29 + pextrh $f0, $f1, $f2 + pinsrh_0 $f3, $f4, $f5 + pinsrh_1 $f6, $f7, $f8 + pinsrh_2 $f9, $f10, $f11 + pinsrh_3 $f12, $f13, $f14 + pmaddhw $f15, $f16, $f17 + pmaxsh $f18, $f19, $f20 + pmaxub $f21, $f22, $f23 + pminsh $f24, $f25, $f26 + pminub $f27, $f28, $f29 + pmovmskb $f0, $f1 + pmulhuh $f2, $f3, $f4 + pmulhh $f5, $f6, $f7 + pmullh $f8, $f9, $f10 + pmuluw $f11, $f12, $f13 + pasubub $f14, $f15, $f16 + biadd $f17, $f18 + pshufh $f19, $f20, $f21 + psllh $f22, $f23, $f24 + psllw $f25, $f26, $f27 + psrah $f28, $f29, $f30 + psraw $f0, $f1, $f2 + psrlh $f3, $f4, $f5 + psrlw $f6, $f7, $f8 + psubb $f9, $f10, $f11 + psubh $f12, $f13, $f14 + psubw $f15, $f16, $f17 + psubd $f18, $f19, $f20 + psubsb $f21, $f22, $f23 + psubsh $f24, $f25, $f26 + psubusb $f27, $f28, $f29 + psubush $f0, $f1, $f2 + punpckhbh $f3, $f4, $f5 + punpckhhw $f6, $f7, $f8 + punpckhwd $f9, $f10, $f11 + punpcklbh $f12, $f13, $f14 + punpcklhw $f15, $f16, $f17 + punpcklwd $f18, $f19, $f20 diff --git a/gas/testsuite/gas/mips/loongson-2f.d b/gas/testsuite/gas/mips/loongson-2f.d index 8d1d8f7..375e0881 100644 --- a/gas/testsuite/gas/mips/loongson-2f.d +++ b/gas/testsuite/gas/mips/loongson-2f.d @@ -39,66 +39,6 @@ Disassembly of section .text: .*: 7222081b nmsub.d \$f0,\$f1,\$f2 .*: 72c520db nmsub.ps \$f3,\$f4,\$f5 -[0-9a-f]+ <simd_insns>: -.*: 4b420802 packsshb \$f0,\$f1,\$f2 -.*: 4b2520c2 packsswh \$f3,\$f4,\$f5 -.*: 4b683982 packushb \$f6,\$f7,\$f8 -.*: 4bcb5240 paddb \$f9,\$f10,\$f11 -.*: 4b4e6b00 paddh \$f12,\$f13,\$f14 -.*: 4b7183c0 paddw \$f15,\$f16,\$f17 -.*: 4bf49c80 paddd \$f18,\$f19,\$f20 -.*: 4b97b540 paddsb \$f21,\$f22,\$f23 -.*: 4b1ace00 paddsh \$f24,\$f25,\$f26 -.*: 4bbde6c0 paddusb \$f27,\$f28,\$f29 -.*: 4b220800 paddush \$f0,\$f1,\$f2 -.*: 4be520c2 pandn \$f3,\$f4,\$f5 -.*: 4b283988 pavgb \$f6,\$f7,\$f8 -.*: 4b0b5248 pavgh \$f9,\$f10,\$f11 -.*: 4b8e6b09 pcmpeqb \$f12,\$f13,\$f14 -.*: 4b5183c9 pcmpeqh \$f15,\$f16,\$f17 -.*: 4b149c89 pcmpeqw \$f18,\$f19,\$f20 -.*: 4bb7b549 pcmpgtb \$f21,\$f22,\$f23 -.*: 4b7ace09 pcmpgth \$f24,\$f25,\$f26 -.*: 4b3de6c9 pcmpgtw \$f27,\$f28,\$f29 -.*: 4b42080e pextrh \$f0,\$f1,\$f2 -.*: 4b8520c3 pinsrh_0 \$f3,\$f4,\$f5 -.*: 4ba83983 pinsrh_1 \$f6,\$f7,\$f8 -.*: 4bcb5243 pinsrh_2 \$f9,\$f10,\$f11 -.*: 4bee6b03 pinsrh_3 \$f12,\$f13,\$f14 -.*: 4b7183ce pmaddhw \$f15,\$f16,\$f17 -.*: 4b549c88 pmaxsh \$f18,\$f19,\$f20 -.*: 4b97b548 pmaxub \$f21,\$f22,\$f23 -.*: 4b7ace08 pminsh \$f24,\$f25,\$f26 -.*: 4bbde6c8 pminub \$f27,\$f28,\$f29 -.*: 4ba0080f pmovmskb \$f0,\$f1 -.*: 4ba4188a pmulhuh \$f2,\$f3,\$f4 -.*: 4b67314a pmulhh \$f5,\$f6,\$f7 -.*: 4b4a4a0a pmullh \$f8,\$f9,\$f10 -.*: 4b8d62ca pmuluw \$f11,\$f12,\$f13 -.*: 4b307b8d pasubub \$f14,\$f15,\$f16 -.*: 4b80944f biadd \$f17,\$f18 -.*: 4b15a4c2 pshufh \$f19,\$f20,\$f21 -.*: 4b38bd8a psllh \$f22,\$f23,\$f24 -.*: 4b1bd64a psllw \$f25,\$f26,\$f27 -.*: 4b7eef0b psrah \$f28,\$f29,\$f30 -.*: 4b42080b psraw \$f0,\$f1,\$f2 -.*: 4b2520cb psrlh \$f3,\$f4,\$f5 -.*: 4b08398b psrlw \$f6,\$f7,\$f8 -.*: 4bcb5241 psubb \$f9,\$f10,\$f11 -.*: 4b4e6b01 psubh \$f12,\$f13,\$f14 -.*: 4b7183c1 psubw \$f15,\$f16,\$f17 -.*: 4bf49c81 psubd \$f18,\$f19,\$f20 -.*: 4b97b541 psubsb \$f21,\$f22,\$f23 -.*: 4b1ace01 psubsh \$f24,\$f25,\$f26 -.*: 4bbde6c1 psubusb \$f27,\$f28,\$f29 -.*: 4b220801 psubush \$f0,\$f1,\$f2 -.*: 4b6520c3 punpckhbh \$f3,\$f4,\$f5 -.*: 4b283983 punpckhhw \$f6,\$f7,\$f8 -.*: 4bab524b punpckhwd \$f9,\$f10,\$f11 -.*: 4b4e6b03 punpcklbh \$f12,\$f13,\$f14 -.*: 4b1183c3 punpcklhw \$f15,\$f16,\$f17 -.*: 4b949c8b punpcklwd \$f18,\$f19,\$f20 - [0-9a-f]+ <fixed_point_insns>: .*: 4b42080c add \$f0,\$f1,\$f2 .*: 4b0520cc addu \$f3,\$f4,\$f5 @@ -123,7 +63,7 @@ Disassembly of section .text: .*: 4bbbd00d slt \$f26,\$f27 .*: 4bbde00e sle \$f28,\$f29 -000001ac <mips5_ps_insns>: +[0-9a-f]+ <mips5_ps_insns>: .*: 46c01005 abs.ps \$f0,\$f2 .*: 46c62080 add.ps \$f2,\$f4,\$f6 .*: 46ca4032 c.eq.ps \$f8,\$f10 diff --git a/gas/testsuite/gas/mips/loongson-2f.s b/gas/testsuite/gas/mips/loongson-2f.s index 4b47a99..3bf8e04 100644 --- a/gas/testsuite/gas/mips/loongson-2f.s +++ b/gas/testsuite/gas/mips/loongson-2f.s @@ -34,66 +34,6 @@ fpu_insns: nmsub.d $f0, $f1, $f2 nmsub.ps $f3, $f4, $f5 -simd_insns: - packsshb $f0, $f1, $f2 - packsswh $f3, $f4, $f5 - packushb $f6, $f7, $f8 - paddb $f9, $f10, $f11 - paddh $f12, $f13, $f14 - paddw $f15, $f16, $f17 - paddd $f18, $f19, $f20 - paddsb $f21, $f22, $f23 - paddsh $f24, $f25, $f26 - paddusb $f27, $f28, $f29 - paddush $f0, $f1, $f2 - pandn $f3, $f4, $f5 - pavgb $f6, $f7, $f8 - pavgh $f9, $f10, $f11 - pcmpeqb $f12, $f13, $f14 - pcmpeqh $f15, $f16, $f17 - pcmpeqw $f18, $f19, $f20 - pcmpgtb $f21, $f22, $f23 - pcmpgth $f24, $f25, $f26 - pcmpgtw $f27, $f28, $f29 - pextrh $f0, $f1, $f2 - pinsrh_0 $f3, $f4, $f5 - pinsrh_1 $f6, $f7, $f8 - pinsrh_2 $f9, $f10, $f11 - pinsrh_3 $f12, $f13, $f14 - pmaddhw $f15, $f16, $f17 - pmaxsh $f18, $f19, $f20 - pmaxub $f21, $f22, $f23 - pminsh $f24, $f25, $f26 - pminub $f27, $f28, $f29 - pmovmskb $f0, $f1 - pmulhuh $f2, $f3, $f4 - pmulhh $f5, $f6, $f7 - pmullh $f8, $f9, $f10 - pmuluw $f11, $f12, $f13 - pasubub $f14, $f15, $f16 - biadd $f17, $f18 - pshufh $f19, $f20, $f21 - psllh $f22, $f23, $f24 - psllw $f25, $f26, $f27 - psrah $f28, $f29, $f30 - psraw $f0, $f1, $f2 - psrlh $f3, $f4, $f5 - psrlw $f6, $f7, $f8 - psubb $f9, $f10, $f11 - psubh $f12, $f13, $f14 - psubw $f15, $f16, $f17 - psubd $f18, $f19, $f20 - psubsb $f21, $f22, $f23 - psubsh $f24, $f25, $f26 - psubusb $f27, $f28, $f29 - psubush $f0, $f1, $f2 - punpckhbh $f3, $f4, $f5 - punpckhhw $f6, $f7, $f8 - punpckhwd $f9, $f10, $f11 - punpcklbh $f12, $f13, $f14 - punpcklhw $f15, $f16, $f17 - punpcklwd $f18, $f19, $f20 - fixed_point_insns: add $f0, $f1, $f2 addu $f3, $f4, $f5 diff --git a/gas/testsuite/gas/mips/loongson-3a-mmi.d b/gas/testsuite/gas/mips/loongson-3a-mmi.d new file mode 100644 index 0000000..7947d4f --- /dev/null +++ b/gas/testsuite/gas/mips/loongson-3a-mmi.d @@ -0,0 +1,68 @@ +#as: -march=loongson3a -mabi=o64 +#objdump: -M reg-names=numeric -M mmi -dr +#name: Loongson-3A mmi tests + +.*: file format .* + +Disassembly of section .text: + +[0-9a-f]+ <simd_insns>: +.*: 4b420802 packsshb \$f0,\$f1,\$f2 +.*: 4b2520c2 packsswh \$f3,\$f4,\$f5 +.*: 4b683982 packushb \$f6,\$f7,\$f8 +.*: 4bcb5240 paddb \$f9,\$f10,\$f11 +.*: 4b4e6b00 paddh \$f12,\$f13,\$f14 +.*: 4b7183c0 paddw \$f15,\$f16,\$f17 +.*: 4bf49c80 paddd \$f18,\$f19,\$f20 +.*: 4b97b540 paddsb \$f21,\$f22,\$f23 +.*: 4b1ace00 paddsh \$f24,\$f25,\$f26 +.*: 4bbde6c0 paddusb \$f27,\$f28,\$f29 +.*: 4b220800 paddush \$f0,\$f1,\$f2 +.*: 4be520c2 pandn \$f3,\$f4,\$f5 +.*: 4b283988 pavgb \$f6,\$f7,\$f8 +.*: 4b0b5248 pavgh \$f9,\$f10,\$f11 +.*: 4b8e6b09 pcmpeqb \$f12,\$f13,\$f14 +.*: 4b5183c9 pcmpeqh \$f15,\$f16,\$f17 +.*: 4b149c89 pcmpeqw \$f18,\$f19,\$f20 +.*: 4bb7b549 pcmpgtb \$f21,\$f22,\$f23 +.*: 4b7ace09 pcmpgth \$f24,\$f25,\$f26 +.*: 4b3de6c9 pcmpgtw \$f27,\$f28,\$f29 +.*: 4b42080e pextrh \$f0,\$f1,\$f2 +.*: 4b8520c3 pinsrh_0 \$f3,\$f4,\$f5 +.*: 4ba83983 pinsrh_1 \$f6,\$f7,\$f8 +.*: 4bcb5243 pinsrh_2 \$f9,\$f10,\$f11 +.*: 4bee6b03 pinsrh_3 \$f12,\$f13,\$f14 +.*: 4b7183ce pmaddhw \$f15,\$f16,\$f17 +.*: 4b549c88 pmaxsh \$f18,\$f19,\$f20 +.*: 4b97b548 pmaxub \$f21,\$f22,\$f23 +.*: 4b7ace08 pminsh \$f24,\$f25,\$f26 +.*: 4bbde6c8 pminub \$f27,\$f28,\$f29 +.*: 4ba0080f pmovmskb \$f0,\$f1 +.*: 4ba4188a pmulhuh \$f2,\$f3,\$f4 +.*: 4b67314a pmulhh \$f5,\$f6,\$f7 +.*: 4b4a4a0a pmullh \$f8,\$f9,\$f10 +.*: 4b8d62ca pmuluw \$f11,\$f12,\$f13 +.*: 4b307b8d pasubub \$f14,\$f15,\$f16 +.*: 4b80944f biadd \$f17,\$f18 +.*: 4b15a4c2 pshufh \$f19,\$f20,\$f21 +.*: 4b38bd8a psllh \$f22,\$f23,\$f24 +.*: 4b1bd64a psllw \$f25,\$f26,\$f27 +.*: 4b7eef0b psrah \$f28,\$f29,\$f30 +.*: 4b42080b psraw \$f0,\$f1,\$f2 +.*: 4b2520cb psrlh \$f3,\$f4,\$f5 +.*: 4b08398b psrlw \$f6,\$f7,\$f8 +.*: 4bcb5241 psubb \$f9,\$f10,\$f11 +.*: 4b4e6b01 psubh \$f12,\$f13,\$f14 +.*: 4b7183c1 psubw \$f15,\$f16,\$f17 +.*: 4bf49c81 psubd \$f18,\$f19,\$f20 +.*: 4b97b541 psubsb \$f21,\$f22,\$f23 +.*: 4b1ace01 psubsh \$f24,\$f25,\$f26 +.*: 4bbde6c1 psubusb \$f27,\$f28,\$f29 +.*: 4b220801 psubush \$f0,\$f1,\$f2 +.*: 4b6520c3 punpckhbh \$f3,\$f4,\$f5 +.*: 4b283983 punpckhhw \$f6,\$f7,\$f8 +.*: 4bab524b punpckhwd \$f9,\$f10,\$f11 +.*: 4b4e6b03 punpcklbh \$f12,\$f13,\$f14 +.*: 4b1183c3 punpcklhw \$f15,\$f16,\$f17 +.*: 4b949c8b punpcklwd \$f18,\$f19,\$f20 +#pass diff --git a/gas/testsuite/gas/mips/loongson-3a-mmi.s b/gas/testsuite/gas/mips/loongson-3a-mmi.s new file mode 100644 index 0000000..ea9db54 --- /dev/null +++ b/gas/testsuite/gas/mips/loongson-3a-mmi.s @@ -0,0 +1,62 @@ + .text + .set noreorder + +simd_insns: + packsshb $f0, $f1, $f2 + packsswh $f3, $f4, $f5 + packushb $f6, $f7, $f8 + paddb $f9, $f10, $f11 + paddh $f12, $f13, $f14 + paddw $f15, $f16, $f17 + paddd $f18, $f19, $f20 + paddsb $f21, $f22, $f23 + paddsh $f24, $f25, $f26 + paddusb $f27, $f28, $f29 + paddush $f0, $f1, $f2 + pandn $f3, $f4, $f5 + pavgb $f6, $f7, $f8 + pavgh $f9, $f10, $f11 + pcmpeqb $f12, $f13, $f14 + pcmpeqh $f15, $f16, $f17 + pcmpeqw $f18, $f19, $f20 + pcmpgtb $f21, $f22, $f23 + pcmpgth $f24, $f25, $f26 + pcmpgtw $f27, $f28, $f29 + pextrh $f0, $f1, $f2 + pinsrh_0 $f3, $f4, $f5 + pinsrh_1 $f6, $f7, $f8 + pinsrh_2 $f9, $f10, $f11 + pinsrh_3 $f12, $f13, $f14 + pmaddhw $f15, $f16, $f17 + pmaxsh $f18, $f19, $f20 + pmaxub $f21, $f22, $f23 + pminsh $f24, $f25, $f26 + pminub $f27, $f28, $f29 + pmovmskb $f0, $f1 + pmulhuh $f2, $f3, $f4 + pmulhh $f5, $f6, $f7 + pmullh $f8, $f9, $f10 + pmuluw $f11, $f12, $f13 + pasubub $f14, $f15, $f16 + biadd $f17, $f18 + pshufh $f19, $f20, $f21 + psllh $f22, $f23, $f24 + psllw $f25, $f26, $f27 + psrah $f28, $f29, $f30 + psraw $f0, $f1, $f2 + psrlh $f3, $f4, $f5 + psrlw $f6, $f7, $f8 + psubb $f9, $f10, $f11 + psubh $f12, $f13, $f14 + psubw $f15, $f16, $f17 + psubd $f18, $f19, $f20 + psubsb $f21, $f22, $f23 + psubsh $f24, $f25, $f26 + psubusb $f27, $f28, $f29 + psubush $f0, $f1, $f2 + punpckhbh $f3, $f4, $f5 + punpckhhw $f6, $f7, $f8 + punpckhwd $f9, $f10, $f11 + punpcklbh $f12, $f13, $f14 + punpcklhw $f15, $f16, $f17 + punpcklwd $f18, $f19, $f20 diff --git a/gas/testsuite/gas/mips/loongson-3a.d b/gas/testsuite/gas/mips/loongson-3a.d index f0eb0e3..24cb319 100644 --- a/gas/testsuite/gas/mips/loongson-3a.d +++ b/gas/testsuite/gas/mips/loongson-3a.d @@ -23,66 +23,6 @@ Disassembly of section .text: .*: 7064101d gsdmod \$2,\$3,\$4 .*: 70c7281f gsdmodu \$5,\$6,\$7 -[0-9a-f]+ <simd_insns>: -.*: 4b420802 packsshb \$f0,\$f1,\$f2 -.*: 4b2520c2 packsswh \$f3,\$f4,\$f5 -.*: 4b683982 packushb \$f6,\$f7,\$f8 -.*: 4bcb5240 paddb \$f9,\$f10,\$f11 -.*: 4b4e6b00 paddh \$f12,\$f13,\$f14 -.*: 4b7183c0 paddw \$f15,\$f16,\$f17 -.*: 4bf49c80 paddd \$f18,\$f19,\$f20 -.*: 4b97b540 paddsb \$f21,\$f22,\$f23 -.*: 4b1ace00 paddsh \$f24,\$f25,\$f26 -.*: 4bbde6c0 paddusb \$f27,\$f28,\$f29 -.*: 4b220800 paddush \$f0,\$f1,\$f2 -.*: 4be520c2 pandn \$f3,\$f4,\$f5 -.*: 4b283988 pavgb \$f6,\$f7,\$f8 -.*: 4b0b5248 pavgh \$f9,\$f10,\$f11 -.*: 4b8e6b09 pcmpeqb \$f12,\$f13,\$f14 -.*: 4b5183c9 pcmpeqh \$f15,\$f16,\$f17 -.*: 4b149c89 pcmpeqw \$f18,\$f19,\$f20 -.*: 4bb7b549 pcmpgtb \$f21,\$f22,\$f23 -.*: 4b7ace09 pcmpgth \$f24,\$f25,\$f26 -.*: 4b3de6c9 pcmpgtw \$f27,\$f28,\$f29 -.*: 4b42080e pextrh \$f0,\$f1,\$f2 -.*: 4b8520c3 pinsrh_0 \$f3,\$f4,\$f5 -.*: 4ba83983 pinsrh_1 \$f6,\$f7,\$f8 -.*: 4bcb5243 pinsrh_2 \$f9,\$f10,\$f11 -.*: 4bee6b03 pinsrh_3 \$f12,\$f13,\$f14 -.*: 4b7183ce pmaddhw \$f15,\$f16,\$f17 -.*: 4b549c88 pmaxsh \$f18,\$f19,\$f20 -.*: 4b97b548 pmaxub \$f21,\$f22,\$f23 -.*: 4b7ace08 pminsh \$f24,\$f25,\$f26 -.*: 4bbde6c8 pminub \$f27,\$f28,\$f29 -.*: 4ba0080f pmovmskb \$f0,\$f1 -.*: 4ba4188a pmulhuh \$f2,\$f3,\$f4 -.*: 4b67314a pmulhh \$f5,\$f6,\$f7 -.*: 4b4a4a0a pmullh \$f8,\$f9,\$f10 -.*: 4b8d62ca pmuluw \$f11,\$f12,\$f13 -.*: 4b307b8d pasubub \$f14,\$f15,\$f16 -.*: 4b80944f biadd \$f17,\$f18 -.*: 4b15a4c2 pshufh \$f19,\$f20,\$f21 -.*: 4b38bd8a psllh \$f22,\$f23,\$f24 -.*: 4b1bd64a psllw \$f25,\$f26,\$f27 -.*: 4b7eef0b psrah \$f28,\$f29,\$f30 -.*: 4b42080b psraw \$f0,\$f1,\$f2 -.*: 4b2520cb psrlh \$f3,\$f4,\$f5 -.*: 4b08398b psrlw \$f6,\$f7,\$f8 -.*: 4bcb5241 psubb \$f9,\$f10,\$f11 -.*: 4b4e6b01 psubh \$f12,\$f13,\$f14 -.*: 4b7183c1 psubw \$f15,\$f16,\$f17 -.*: 4bf49c81 psubd \$f18,\$f19,\$f20 -.*: 4b97b541 psubsb \$f21,\$f22,\$f23 -.*: 4b1ace01 psubsh \$f24,\$f25,\$f26 -.*: 4bbde6c1 psubusb \$f27,\$f28,\$f29 -.*: 4b220801 psubush \$f0,\$f1,\$f2 -.*: 4b6520c3 punpckhbh \$f3,\$f4,\$f5 -.*: 4b283983 punpckhhw \$f6,\$f7,\$f8 -.*: 4bab524b punpckhwd \$f9,\$f10,\$f11 -.*: 4b4e6b03 punpcklbh \$f12,\$f13,\$f14 -.*: 4b1183c3 punpcklhw \$f15,\$f16,\$f17 -.*: 4b949c8b punpcklwd \$f18,\$f19,\$f20 - [0-9a-f]+ <fixed_point_insns>: .*: 4b42080c add \$f0,\$f1,\$f2 .*: 4b0520cc addu \$f3,\$f4,\$f5 diff --git a/gas/testsuite/gas/mips/loongson-3a.s b/gas/testsuite/gas/mips/loongson-3a.s index 73c00c0..ce99fc1 100644 --- a/gas/testsuite/gas/mips/loongson-3a.s +++ b/gas/testsuite/gas/mips/loongson-3a.s @@ -18,66 +18,6 @@ integer_insns: gsdmod $2, $3, $4 gsdmodu $5, $6, $7 -simd_insns: - packsshb $f0, $f1, $f2 - packsswh $f3, $f4, $f5 - packushb $f6, $f7, $f8 - paddb $f9, $f10, $f11 - paddh $f12, $f13, $f14 - paddw $f15, $f16, $f17 - paddd $f18, $f19, $f20 - paddsb $f21, $f22, $f23 - paddsh $f24, $f25, $f26 - paddusb $f27, $f28, $f29 - paddush $f0, $f1, $f2 - pandn $f3, $f4, $f5 - pavgb $f6, $f7, $f8 - pavgh $f9, $f10, $f11 - pcmpeqb $f12, $f13, $f14 - pcmpeqh $f15, $f16, $f17 - pcmpeqw $f18, $f19, $f20 - pcmpgtb $f21, $f22, $f23 - pcmpgth $f24, $f25, $f26 - pcmpgtw $f27, $f28, $f29 - pextrh $f0, $f1, $f2 - pinsrh_0 $f3, $f4, $f5 - pinsrh_1 $f6, $f7, $f8 - pinsrh_2 $f9, $f10, $f11 - pinsrh_3 $f12, $f13, $f14 - pmaddhw $f15, $f16, $f17 - pmaxsh $f18, $f19, $f20 - pmaxub $f21, $f22, $f23 - pminsh $f24, $f25, $f26 - pminub $f27, $f28, $f29 - pmovmskb $f0, $f1 - pmulhuh $f2, $f3, $f4 - pmulhh $f5, $f6, $f7 - pmullh $f8, $f9, $f10 - pmuluw $f11, $f12, $f13 - pasubub $f14, $f15, $f16 - biadd $f17, $f18 - pshufh $f19, $f20, $f21 - psllh $f22, $f23, $f24 - psllw $f25, $f26, $f27 - psrah $f28, $f29, $f30 - psraw $f0, $f1, $f2 - psrlh $f3, $f4, $f5 - psrlw $f6, $f7, $f8 - psubb $f9, $f10, $f11 - psubh $f12, $f13, $f14 - psubw $f15, $f16, $f17 - psubd $f18, $f19, $f20 - psubsb $f21, $f22, $f23 - psubsh $f24, $f25, $f26 - psubusb $f27, $f28, $f29 - psubush $f0, $f1, $f2 - punpckhbh $f3, $f4, $f5 - punpckhhw $f6, $f7, $f8 - punpckhwd $f9, $f10, $f11 - punpcklbh $f12, $f13, $f14 - punpcklhw $f15, $f16, $f17 - punpcklwd $f18, $f19, $f20 - fixed_point_insns: add $f0, $f1, $f2 addu $f3, $f4, $f5 diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index 78969ff..ad371e1 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -1391,6 +1391,9 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "loongson-3a-2" run_dump_test "loongson-3a-3" + run_dump_test "loongson-2f-mmi" + run_dump_test "loongson-3a-mmi" + if { $has_newabi } { run_dump_test_arches "octeon" [mips_arch_list_matching octeon] } diff --git a/include/elf/mips.h b/include/elf/mips.h index 4e2cde3..33b1166 100644 --- a/include/elf/mips.h +++ b/include/elf/mips.h @@ -1238,7 +1238,8 @@ extern void bfd_mips_elf_swap_abiflags_v0_out #define AFL_ASE_CRC 0x00008000 /* CRC ASE. */ #define AFL_ASE_RESERVED1 0x00010000 /* Reserved by MIPS Tech for WIP. */ #define AFL_ASE_GINV 0x00020000 /* GINV ASE. */ -#define AFL_ASE_MASK 0x0002ffff /* All ASEs. */ +#define AFL_ASE_MMI 0x00040000 /* Loongson MMI ASE. */ +#define AFL_ASE_MASK 0x0004ffff /* All ASEs. */ /* Values for the isa_ext word of an ABI flags structure. */ diff --git a/include/opcode/mips.h b/include/opcode/mips.h index 1ab1780..5400e08 100644 --- a/include/opcode/mips.h +++ b/include/opcode/mips.h @@ -1302,6 +1302,8 @@ static const unsigned int mips_isa_table[] = { #define ASE_CRC64 0x00080000 /* Global INValidate Extension. */ #define ASE_GINV 0x00100000 +/* Loongson MultiMedia extensions Instructions (MMI). */ +#define ASE_MMI 0x00200000 /* MIPS ISA defines, use instead of hardcoding ISA level. */ diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c index bbf2132..6776372 100644 --- a/opcodes/mips-dis.c +++ b/opcodes/mips-dis.c @@ -626,11 +626,11 @@ const struct mips_arch_choice mips_arch_choices[] = NULL, 0, mips_cp1_names_numeric, mips_hwr_names_numeric }, { "loongson2f", 1, bfd_mach_mips_loongson_2f, CPU_LOONGSON_2F, - ISA_MIPS3 | INSN_LOONGSON_2F, 0, mips_cp0_names_numeric, + ISA_MIPS3 | INSN_LOONGSON_2F | ASE_MMI, 0, mips_cp0_names_numeric, NULL, 0, mips_cp1_names_numeric, mips_hwr_names_numeric }, { "loongson3a", 1, bfd_mach_mips_loongson_3a, CPU_LOONGSON_3A, - ISA_MIPS64R2 | INSN_LOONGSON_3A, 0, mips_cp0_names_numeric, + ISA_MIPS64R2 | INSN_LOONGSON_3A | ASE_MMI, 0, mips_cp0_names_numeric, NULL, 0, mips_cp1_names_mips3264, mips_hwr_names_numeric }, { "octeon", 1, bfd_mach_mips_octeon, CPU_OCTEON, @@ -935,6 +935,12 @@ parse_mips_ase_option (const char *option) return TRUE; } + if (CONST_STRNEQ (option, "mmi")) + { + mips_ase |= ASE_MMI; + return TRUE; + } + return FALSE; } @@ -2582,6 +2588,9 @@ static struct { "ginv", N_("Recognize the Global INValidate (GINV) ASE " "instructions.\n"), MIPS_OPTION_ARG_NONE }, + { "mmi", N_("Recognize the Loongson MultiMedia extensions " + "Instructions (MMI) ASE instructions.\n"), + MIPS_OPTION_ARG_NONE }, { "gpr-names=", N_("Print GPR names according to specified ABI.\n\ Default: based on binary being disassembled.\n"), MIPS_OPTION_ARG_ABI }, diff --git a/opcodes/mips-opc.c b/opcodes/mips-opc.c index 1cbcbc6..51af78f 100644 --- a/opcodes/mips-opc.c +++ b/opcodes/mips-opc.c @@ -412,6 +412,9 @@ decode_mips_operand (const char *p) /* Global INValidate (GINV) support. */ #define GINV ASE_GINV +/* Loongson MultiMedia extensions Instructions (MMI) support. */ +#define LMMI ASE_MMI + /* The order of overloaded instructions matters. Label arguments and register arguments look the same. Instructions that can have either for arguments must apear in the correct order in this table for the @@ -2470,137 +2473,137 @@ const struct mips_opcode mips_builtin_opcodes[] = {"dmodu.g", "d,s,t", 0x7000001f, 0xfc0007ff, WR_1|RD_2|RD_3, 0, IL2F, 0, 0 }, {"gsdmodu", "d,s,t", 0x7000001f, 0xfc0007ff, WR_1|RD_2|RD_3, 0, IL3A, 0, 0 }, {"packsshb", "D,S,T", 0x47400002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"packsshb", "D,S,T", 0x4b400002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"packsshb", "D,S,T", 0x4b400002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"packsswh", "D,S,T", 0x47200002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"packsswh", "D,S,T", 0x4b200002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"packsswh", "D,S,T", 0x4b200002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"packushb", "D,S,T", 0x47600002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"packushb", "D,S,T", 0x4b600002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"packushb", "D,S,T", 0x4b600002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"paddb", "D,S,T", 0x47c00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"paddb", "D,S,T", 0x4bc00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"paddb", "D,S,T", 0x4bc00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"paddb", "d,s,t", 0x70000208, 0xfc0007ff, WR_1|RD_2|RD_3, 0, MMI, 0, 0 }, {"paddh", "D,S,T", 0x47400000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, {"paddh", "d,s,t", 0x70000108, 0xfc0007ff, WR_1|RD_2|RD_3, 0, MMI, 0, 0 }, -{"paddh", "D,S,T", 0x4b400000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"paddh", "D,S,T", 0x4b400000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"paddw", "D,S,T", 0x47600000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"paddw", "D,S,T", 0x4b600000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"paddw", "D,S,T", 0x4b600000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"paddw", "d,s,t", 0x70000008, 0xfc0007ff, WR_1|RD_2|RD_3, 0, MMI, 0, 0 }, {"paddd", "D,S,T", 0x47e00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"paddd", "D,S,T", 0x4be00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"paddd", "D,S,T", 0x4be00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"paddsb", "D,S,T", 0x47800000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"paddsb", "D,S,T", 0x4b800000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"paddsb", "D,S,T", 0x4b800000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"paddsb", "d,s,t", 0x70000608, 0xfc0007ff, WR_1|RD_2|RD_3, 0, MMI, 0, 0 }, {"paddsh", "D,S,T", 0x47000000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"paddsh", "D,S,T", 0x4b000000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"paddsh", "D,S,T", 0x4b000000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"paddsh", "d,s,t", 0x70000508, 0xfc0007ff, WR_1|RD_2|RD_3, 0, MMI, 0, 0 }, {"paddusb", "D,S,T", 0x47a00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"paddusb", "D,S,T", 0x4ba00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"paddusb", "D,S,T", 0x4ba00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"paddush", "D,S,T", 0x47200000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"paddush", "D,S,T", 0x4b200000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"paddush", "D,S,T", 0x4b200000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pandn", "D,S,T", 0x47e00002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pandn", "D,S,T", 0x4be00002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pandn", "D,S,T", 0x4be00002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pavgb", "D,S,T", 0x46600000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pavgb", "D,S,T", 0x4b200008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pavgb", "D,S,T", 0x4b200008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pavgh", "D,S,T", 0x46400000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pavgh", "D,S,T", 0x4b000008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pavgh", "D,S,T", 0x4b000008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pcmpeqb", "D,S,T", 0x46c00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pcmpeqb", "D,S,T", 0x4b800009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pcmpeqb", "D,S,T", 0x4b800009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pcmpeqh", "D,S,T", 0x46800001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pcmpeqh", "D,S,T", 0x4b400009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pcmpeqh", "D,S,T", 0x4b400009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pcmpeqw", "D,S,T", 0x46400001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pcmpeqw", "D,S,T", 0x4b000009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pcmpeqw", "D,S,T", 0x4b000009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pcmpgtb", "D,S,T", 0x46e00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pcmpgtb", "D,S,T", 0x4ba00009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pcmpgtb", "D,S,T", 0x4ba00009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pcmpgth", "D,S,T", 0x46a00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pcmpgth", "D,S,T", 0x4b600009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pcmpgth", "D,S,T", 0x4b600009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pcmpgtw", "D,S,T", 0x46600001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pcmpgtw", "D,S,T", 0x4b200009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pcmpgtw", "D,S,T", 0x4b200009, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pextrh", "D,S,T", 0x45c00002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pextrh", "D,S,T", 0x4b40000e, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pextrh", "D,S,T", 0x4b40000e, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pinsrh_0", "D,S,T", 0x47800003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pinsrh_0", "D,S,T", 0x4b800003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pinsrh_0", "D,S,T", 0x4b800003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pinsrh_1", "D,S,T", 0x47a00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pinsrh_1", "D,S,T", 0x4ba00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pinsrh_1", "D,S,T", 0x4ba00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pinsrh_2", "D,S,T", 0x47c00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pinsrh_2", "D,S,T", 0x4bc00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pinsrh_2", "D,S,T", 0x4bc00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pinsrh_3", "D,S,T", 0x47e00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pinsrh_3", "D,S,T", 0x4be00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pinsrh_3", "D,S,T", 0x4be00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pmaddhw", "D,S,T", 0x45e00002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pmaddhw", "D,S,T", 0x4b60000e, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pmaddhw", "D,S,T", 0x4b60000e, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pmaxsh", "D,S,T", 0x46800000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pmaxsh", "D,S,T", 0x4b400008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pmaxsh", "D,S,T", 0x4b400008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pmaxub", "D,S,T", 0x46c00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pmaxub", "D,S,T", 0x4b800008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pmaxub", "D,S,T", 0x4b800008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pminsh", "D,S,T", 0x46a00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pminsh", "D,S,T", 0x4b600008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pminsh", "D,S,T", 0x4b600008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pminub", "D,S,T", 0x46e00000, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pminub", "D,S,T", 0x4ba00008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pminub", "D,S,T", 0x4ba00008, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pmovmskb", "D,S", 0x46a00005, 0xffff003f, WR_1|RD_2|FP_D, 0, IL2E, 0, 0 }, -{"pmovmskb", "D,S", 0x4ba0000f, 0xffff003f, WR_1|RD_2|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pmovmskb", "D,S", 0x4ba0000f, 0xffff003f, WR_1|RD_2|FP_D, 0, 0, LMMI, 0 }, {"pmulhuh", "D,S,T", 0x46e00002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pmulhuh", "D,S,T", 0x4ba0000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pmulhuh", "D,S,T", 0x4ba0000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pmulhh", "D,S,T", 0x46a00002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pmulhh", "D,S,T", 0x4b60000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pmulhh", "D,S,T", 0x4b60000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pmullh", "D,S,T", 0x46800002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pmullh", "D,S,T", 0x4b40000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pmullh", "D,S,T", 0x4b40000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pmuluw", "D,S,T", 0x46c00002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pmuluw", "D,S,T", 0x4b80000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pmuluw", "D,S,T", 0x4b80000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"pasubub", "D,S,T", 0x45a00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pasubub", "D,S,T", 0x4b20000d, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pasubub", "D,S,T", 0x4b20000d, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"biadd", "D,S", 0x46800005, 0xffff003f, WR_1|RD_2|FP_D, 0, IL2E, 0, 0 }, -{"biadd", "D,S", 0x4b80000f, 0xffff003f, WR_1|RD_2|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"biadd", "D,S", 0x4b80000f, 0xffff003f, WR_1|RD_2|FP_D, 0, 0, LMMI, 0 }, {"pshufh", "D,S,T", 0x47000002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"pshufh", "D,S,T", 0x4b000002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"pshufh", "D,S,T", 0x4b000002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psllh", "D,S,T", 0x46600002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psllh", "D,S,T", 0x4b20000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psllh", "D,S,T", 0x4b20000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psllh", "d,t,<", 0x70000034, 0xffe0003f, WR_1|RD_2, 0, MMI, 0, 0 }, {"psllw", "D,S,T", 0x46400002, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psllw", "D,S,T", 0x4b00000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psllw", "D,S,T", 0x4b00000a, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psllw", "d,t,<", 0x7000003c, 0xffe0003f, WR_1|RD_2, 0, MMI, 0, 0 }, {"psrah", "D,S,T", 0x46a00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psrah", "D,S,T", 0x4b60000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psrah", "D,S,T", 0x4b60000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psrah", "d,t,<", 0x70000037, 0xffe0003f, WR_1|RD_2, 0, MMI, 0, 0 }, {"psraw", "D,S,T", 0x46800003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psraw", "D,S,T", 0x4b40000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psraw", "D,S,T", 0x4b40000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psraw", "d,t,<", 0x7000003f, 0xffe0003f, WR_1|RD_2, 0, MMI, 0, 0 }, {"psrlh", "D,S,T", 0x46600003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psrlh", "D,S,T", 0x4b20000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psrlh", "D,S,T", 0x4b20000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psrlh", "d,t,<", 0x70000036, 0xffe0003f, WR_1|RD_2, 0, MMI, 0, 0 }, {"psrlw", "D,S,T", 0x46400003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psrlw", "D,S,T", 0x4b00000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psrlw", "D,S,T", 0x4b00000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psrlw", "d,t,<", 0x7000003e, 0xffe0003f, WR_1|RD_2, 0, MMI, 0, 0 }, {"psubb", "D,S,T", 0x47c00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psubb", "D,S,T", 0x4bc00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psubb", "D,S,T", 0x4bc00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psubb", "d,s,t", 0x70000248, 0xfc0007ff, WR_1|RD_2|RD_3, 0, MMI, 0, 0 }, {"psubh", "D,S,T", 0x47400001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psubh", "D,S,T", 0x4b400001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psubh", "D,S,T", 0x4b400001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psubh", "d,s,t", 0x70000148, 0xfc0007ff, WR_1|RD_2|RD_3, 0, MMI, 0, 0 }, {"psubw", "D,S,T", 0x47600001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psubw", "D,S,T", 0x4b600001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psubw", "D,S,T", 0x4b600001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psubw", "d,s,t", 0x70000048, 0xfc0007ff, WR_1|RD_2|RD_3, 0, MMI, 0, 0 }, {"psubd", "D,S,T", 0x47e00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psubd", "D,S,T", 0x4be00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psubd", "D,S,T", 0x4be00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psubsb", "D,S,T", 0x47800001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psubsb", "D,S,T", 0x4b800001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psubsb", "D,S,T", 0x4b800001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psubsb", "d,s,t", 0x70000648, 0xfc0007ff, WR_1|RD_2|RD_3, 0, MMI, 0, 0 }, {"psubsh", "D,S,T", 0x47000001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psubsh", "D,S,T", 0x4b000001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psubsh", "D,S,T", 0x4b000001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psubsh", "d,s,t", 0x70000548, 0xfc0007ff, WR_1|RD_2|RD_3, 0, MMI, 0, 0 }, {"psubusb", "D,S,T", 0x47a00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psubusb", "D,S,T", 0x4ba00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psubusb", "D,S,T", 0x4ba00001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"psubush", "D,S,T", 0x47200001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"psubush", "D,S,T", 0x4b200001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"psubush", "D,S,T", 0x4b200001, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"punpckhbh", "D,S,T", 0x47600003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"punpckhbh", "D,S,T", 0x4b600003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"punpckhbh", "D,S,T", 0x4b600003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"punpckhhw", "D,S,T", 0x47200003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"punpckhhw", "D,S,T", 0x4b200003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"punpckhhw", "D,S,T", 0x4b200003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"punpckhwd", "D,S,T", 0x46e00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"punpckhwd", "D,S,T", 0x4ba0000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"punpckhwd", "D,S,T", 0x4ba0000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"punpcklbh", "D,S,T", 0x47400003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"punpcklbh", "D,S,T", 0x4b400003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"punpcklbh", "D,S,T", 0x4b400003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"punpcklhw", "D,S,T", 0x47000003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"punpcklhw", "D,S,T", 0x4b000003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"punpcklhw", "D,S,T", 0x4b000003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"punpcklwd", "D,S,T", 0x46c00003, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 }, -{"punpcklwd", "D,S,T", 0x4b80000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F|IL3A, 0, 0 }, +{"punpcklwd", "D,S,T", 0x4b80000b, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, 0, LMMI, 0 }, {"sequ", "S,T", 0x46800032, 0xffe007ff, RD_1|RD_2|WR_CC|FP_D, 0, IL2E, 0, 0 }, {"sequ", "S,T", 0x4b80000c, 0xffe007ff, RD_1|RD_2|WR_CC|FP_D, 0, IL2F|IL3A, 0, 0 }, /* MIPS Enhanced VA Scheme */ -- 2.1.0
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |