aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorChenghua Xu <paul.hua.gm@gmail.com>2018-07-20 13:21:33 +0100
committerMaciej W. Rozycki <macro@mips.com>2018-07-20 13:21:33 +0100
commit8095d2f70e1a982c006f306be1a9e1c892758914 (patch)
tree75d94d2162fb314607ec90db8e4088654ce7c6de /gas
parentdb841b6fcd8b3bc2e6d6774e81c14dfbb9ac815d (diff)
downloadgdb-8095d2f70e1a982c006f306be1a9e1c892758914.zip
gdb-8095d2f70e1a982c006f306be1a9e1c892758914.tar.gz
gdb-8095d2f70e1a982c006f306be1a9e1c892758914.tar.bz2
MIPS/GAS: Split Loongson MMI Instructions from loongson2f/3a
The MMI instruction set has been implemented in many Loongson processors. There is a lot of software optimized for MMI. This patch splits MMI from loongson2f/3a, and adds GAS and disassembler options for MMI instructions. 2018-07-20 Chenghua Xu <paul.hua.gm@gmail.com> Maciej W. Rozycki <macro@mips.com> bfd/ * elfxx-mips.c (print_mips_ases): Add MMI extension. binutils/ * readelf.c (print_mips_ases): Add MMI extension. gas/ * NEWS: Mention MultiMedia extensions Instructions (MMI) support. * config/tc-mips.c (options): Add OPTION_LOONGSON_MMI and OPTION_NO_LOONGSON_MMI. (md_longopts): Likewise. (mips_ases): Define availability for MMI. (mips_convert_ase_flags): Map ASE_LOONGSON_MMI to AFL_ASE_LOONGSON_MMI. (mips_cpu_info_table): Add ASE_LOONGSON_MMI for loongson2f/3a. (md_show_usage): Add help for -mloongson-mmi and -mno-loongson-mmi. * doc/as.texi: Document -mloongson-mmi, -mno-loongson-mmi. * doc/c-mips.texi: Document -mloongson-mmi, -mno-loongson-mmi, .set loongson-mmi and .set noloongson-mmi. * testsuite/gas/mips/loongson-2f.d: Move mmi test to ... * testsuite/gas/mips/loongson-2f-mmi.d: Here. Add ISA/ASE flag verification. * testsuite/gas/mips/loongson-2f.s: Move mmi test to ... * testsuite/gas/mips/loongson-2f-mmi.s: Here. * testsuite/gas/mips/loongson-3a.d: Move mmi test to ... * testsuite/gas/mips/loongson-3a-mmi.d: Here. Add ISA/ASE flag verification. * testsuite/gas/mips/loongson-3a.s: Move mmi test to ... * testsuite/gas/mips/loongson-3a-mmi.s: Here. * testsuite/gas/mips/mips.exp: Run loongson-2f-mmi and loongson-3a-mmi tests. include/ * elf/mips.h (AFL_ASE_MMI): New macro. (AFL_ASE_MASK): Update to include AFL_ASE_LOONGSON_MMI. * opcode/mips.h (ASE_LOONGSON_MMI): New macro. opcodes/ * mips-dis.c (mips_arch_choices): Add MMI to loongson2f and loongson3a descriptors. (parse_mips_ase_option): Handle -M loongson-mmi option. (print_mips_disassembler_options): Document -M loongson-mmi. * mips-opc.c (LMMI): New macro. (mips_opcodes): Replace IL2F|IL3A marking with LMMI for MMI instructions.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog30
-rw-r--r--gas/NEWS3
-rw-r--r--gas/config/tc-mips.c18
-rw-r--r--gas/doc/as.texi8
-rw-r--r--gas/doc/c-mips.texi15
-rw-r--r--gas/testsuite/gas/mips/loongson-2f-mmi.d106
-rw-r--r--gas/testsuite/gas/mips/loongson-2f-mmi.s86
-rw-r--r--gas/testsuite/gas/mips/loongson-2f.d86
-rw-r--r--gas/testsuite/gas/mips/loongson-2f.s84
-rw-r--r--gas/testsuite/gas/mips/loongson-3a-mmi.d106
-rw-r--r--gas/testsuite/gas/mips/loongson-3a-mmi.s86
-rw-r--r--gas/testsuite/gas/mips/loongson-3a.d84
-rw-r--r--gas/testsuite/gas/mips/loongson-3a.s84
-rw-r--r--gas/testsuite/gas/mips/mips.exp3
14 files changed, 460 insertions, 339 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index beea270..a612f71 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,33 @@
+2018-07-20 Chenghua Xu <paul.hua.gm@gmail.com>
+ Maciej W. Rozycki <macro@mips.com>
+
+ * NEWS: Mention MultiMedia extensions Instructions (MMI)
+ support.
+ * config/tc-mips.c (options): Add OPTION_LOONGSON_MMI and
+ OPTION_NO_LOONGSON_MMI.
+ (md_longopts): Likewise.
+ (mips_ases): Define availability for MMI.
+ (mips_convert_ase_flags): Map ASE_LOONGSON_MMI to
+ AFL_ASE_LOONGSON_MMI.
+ (mips_cpu_info_table): Add ASE_LOONGSON_MMI for loongson2f/3a.
+ (md_show_usage): Add help for -mloongson-mmi and
+ -mno-loongson-mmi.
+ * doc/as.texi: Document -mloongson-mmi, -mno-loongson-mmi.
+ * doc/c-mips.texi: Document -mloongson-mmi, -mno-loongson-mmi,
+ .set loongson-mmi and .set noloongson-mmi.
+ * testsuite/gas/mips/loongson-2f.d: Move mmi test to ...
+ * testsuite/gas/mips/loongson-2f-mmi.d: Here. Add ISA/ASE
+ flag verification.
+ * testsuite/gas/mips/loongson-2f.s: Move mmi test to ...
+ * testsuite/gas/mips/loongson-2f-mmi.s: Here.
+ * testsuite/gas/mips/loongson-3a.d: Move mmi test to ...
+ * testsuite/gas/mips/loongson-3a-mmi.d: Here. Add ISA/ASE
+ flag verification.
+ * testsuite/gas/mips/loongson-3a.s: Move mmi test to ...
+ * testsuite/gas/mips/loongson-3a-mmi.s: Here.
+ * testsuite/gas/mips/mips.exp: Run loongson-2f-mmi and
+ loongson-3a-mmi tests.
+
2018-07-20 Jose E. Marchesi <jose.marchesi@oracle.com>
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
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..9bbf59c 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_LOONGSON_MMI,
+ OPTION_NO_LOONGSON_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},
+ {"mloongson-mmi", no_argument, NULL, OPTION_LOONGSON_MMI},
+ {"mno-loongson-mmi", no_argument, NULL, OPTION_NO_LOONGSON_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 },
+
+ { "loongson-mmi", ASE_LOONGSON_MMI, 0,
+ OPTION_LOONGSON_MMI, OPTION_NO_LOONGSON_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_LOONGSON_MMI)
+ ext_ases |= AFL_ASE_LOONGSON_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_LOONGSON_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_LOONGSON_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, _("\
+-mloongson-mmi generate Loongson MultiMedia extensions Instructions (MMI) instructions\n\
+-mno-loongson-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..e9b6016 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{-mloongson-mmi}] [@b{-mno-loongson-mmi}]
[@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 -mloongson-mmi
+@itemx -mno-loongson-mmi
+Generate code for the Loongson MultiMedia extensions Instructions (MMI)
+Application Specific Extension. This tells the assembler to accept MMI
+instructions.
+@samp{-mno-loongson-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..d10f2d6 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 -mloongson-mmi
+@itemx -mno-loongson-mmi
+Generate code for the Loongson MultiMedia extensions Instructions (MMI)
+Application Specific Extension. This tells the assembler to accept MMI
+instructions.
+@samp{-mno-loongson-mmi} turns off this option.
+
@item -minsn32
@itemx -mno-insn32
Only use 32-bit instruction encodings when generating code for the
@@ -1137,6 +1144,14 @@ 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 loongson-mmi}
+@kindex @code{.set noloongson-mmi}
+The directive @code{.set loongson-mmi} makes the assembler accept
+instructions from the MMI Extension from that point on in the assembly.
+The @code{.set noloongson-mmi} 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..84224f9
--- /dev/null
+++ b/gas/testsuite/gas/mips/loongson-2f-mmi.d
@@ -0,0 +1,106 @@
+#as: -march=loongson2f -mabi=o64
+#objdump: -M reg-names=numeric -dp
+#name: Loongson-2F MMI tests
+
+.*: file format .*
+
+private flags = .*
+
+MIPS ABI Flags Version: 0
+ISA: .*
+GPR size: .*
+CPR1 size: .*
+CPR2 size: .*
+FP ABI: .*
+ISA Extension: ST Microelectronics Loongson 2F
+ASEs:
+ Loongson MMI ASE
+FLAGS 1: .*
+FLAGS 2: .*
+
+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
+
+[0-9a-f]+ <fixed_point_insns>:
+.*: 4b42080c add \$f0,\$f1,\$f2
+.*: 4b0520cc addu \$f3,\$f4,\$f5
+.*: 4b68398c dadd \$f6,\$f7,\$f8
+.*: 4b4b524d sub \$f9,\$f10,\$f11
+.*: 4b0e6b0d subu \$f12,\$f13,\$f14
+.*: 4b7183cd dsub \$f15,\$f16,\$f17
+.*: 4b349c8c or \$f18,\$f19,\$f20
+.*: 4b17b54e sll \$f21,\$f22,\$f23
+.*: 4b3ace0e dsll \$f24,\$f25,\$f26
+.*: 4b9de6c2 xor \$f27,\$f28,\$f29
+.*: 4ba20802 nor \$f0,\$f1,\$f2
+.*: 4bc520c2 and \$f3,\$f4,\$f5
+.*: 4b08398f srl \$f6,\$f7,\$f8
+.*: 4b2b524f dsrl \$f9,\$f10,\$f11
+.*: 4b4e6b0f sra \$f12,\$f13,\$f14
+.*: 4b7183cf dsra \$f15,\$f16,\$f17
+.*: 4b93900c sequ \$f18,\$f19
+.*: 4b95a00d sltu \$f20,\$f21
+.*: 4b97b00e sleu \$f22,\$f23
+.*: 4bb9c00c seq \$f24,\$f25
+.*: 4bbbd00d slt \$f26,\$f27
+.*: 4bbde00e sle \$f28,\$f29
+#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..e87d66e
--- /dev/null
+++ b/gas/testsuite/gas/mips/loongson-2f-mmi.s
@@ -0,0 +1,86 @@
+ .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
+
+fixed_point_insns:
+ add $f0, $f1, $f2
+ addu $f3, $f4, $f5
+ dadd $f6, $f7, $f8
+ sub $f9, $f10, $f11
+ subu $f12, $f13, $f14
+ dsub $f15, $f16, $f17
+ or $f18, $f19, $f20
+ sll $f21, $f22, $f23
+ dsll $f24, $f25, $f26
+ xor $f27, $f28, $f29
+ nor $f0, $f1, $f2
+ and $f3, $f4, $f5
+ srl $f6, $f7, $f8
+ dsrl $f9, $f10, $f11
+ sra $f12, $f13, $f14
+ dsra $f15, $f16, $f17
+ sequ $f18, $f19
+ sltu $f20, $f21
+ sleu $f22, $f23
+ seq $f24, $f25
+ slt $f26, $f27
+ sle $f28, $f29
diff --git a/gas/testsuite/gas/mips/loongson-2f.d b/gas/testsuite/gas/mips/loongson-2f.d
index a4e83c9..3f4566f 100644
--- a/gas/testsuite/gas/mips/loongson-2f.d
+++ b/gas/testsuite/gas/mips/loongson-2f.d
@@ -39,91 +39,7 @@ 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
-.*: 4b68398c dadd \$f6,\$f7,\$f8
-.*: 4b4b524d sub \$f9,\$f10,\$f11
-.*: 4b0e6b0d subu \$f12,\$f13,\$f14
-.*: 4b7183cd dsub \$f15,\$f16,\$f17
-.*: 4b349c8c or \$f18,\$f19,\$f20
-.*: 4b17b54e sll \$f21,\$f22,\$f23
-.*: 4b3ace0e dsll \$f24,\$f25,\$f26
-.*: 4b9de6c2 xor \$f27,\$f28,\$f29
-.*: 4ba20802 nor \$f0,\$f1,\$f2
-.*: 4bc520c2 and \$f3,\$f4,\$f5
-.*: 4b08398f srl \$f6,\$f7,\$f8
-.*: 4b2b524f dsrl \$f9,\$f10,\$f11
-.*: 4b4e6b0f sra \$f12,\$f13,\$f14
-.*: 4b7183cf dsra \$f15,\$f16,\$f17
-.*: 4b93900c sequ \$f18,\$f19
-.*: 4b95a00d sltu \$f20,\$f21
-.*: 4b97b00e sleu \$f22,\$f23
-.*: 4bb9c00c seq \$f24,\$f25
-.*: 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 2db07ee..9f71e57 100644
--- a/gas/testsuite/gas/mips/loongson-2f.s
+++ b/gas/testsuite/gas/mips/loongson-2f.s
@@ -34,90 +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
- dadd $f6, $f7, $f8
- sub $f9, $f10, $f11
- subu $f12, $f13, $f14
- dsub $f15, $f16, $f17
- or $f18, $f19, $f20
- sll $f21, $f22, $f23
- dsll $f24, $f25, $f26
- xor $f27, $f28, $f29
- nor $f0, $f1, $f2
- and $f3, $f4, $f5
- srl $f6, $f7, $f8
- dsrl $f9, $f10, $f11
- sra $f12, $f13, $f14
- dsra $f15, $f16, $f17
- sequ $f18, $f19
- sltu $f20, $f21
- sleu $f22, $f23
- seq $f24, $f25
- slt $f26, $f27
- sle $f28, $f29
-
mips5_ps_insns:
abs.ps $f0, $f2
add.ps $f2, $f4, $f6
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..de69d3e
--- /dev/null
+++ b/gas/testsuite/gas/mips/loongson-3a-mmi.d
@@ -0,0 +1,106 @@
+#as: -march=loongson3a -mabi=o64
+#objdump: -M reg-names=numeric -dp
+#name: Loongson-3A MMI tests
+
+.*: file format .*
+
+private flags = .*
+
+MIPS ABI Flags Version: 0
+ISA: .*
+GPR size: .*
+CPR1 size: .*
+CPR2 size: .*
+FP ABI: .*
+ISA Extension: Loongson 3A
+ASEs:
+ Loongson MMI ASE
+FLAGS 1: .*
+FLAGS 2: .*
+
+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
+
+[0-9a-f]+ <fixed_point_insns>:
+.*: 4b42080c add \$f0,\$f1,\$f2
+.*: 4b0520cc addu \$f3,\$f4,\$f5
+.*: 4b68398c dadd \$f6,\$f7,\$f8
+.*: 4b4b524d sub \$f9,\$f10,\$f11
+.*: 4b0e6b0d subu \$f12,\$f13,\$f14
+.*: 4b7183cd dsub \$f15,\$f16,\$f17
+.*: 4b349c8c or \$f18,\$f19,\$f20
+.*: 4b17b54e sll \$f21,\$f22,\$f23
+.*: 4b3ace0e dsll \$f24,\$f25,\$f26
+.*: 4b9de6c2 xor \$f27,\$f28,\$f29
+.*: 4ba20802 nor \$f0,\$f1,\$f2
+.*: 4bc520c2 and \$f3,\$f4,\$f5
+.*: 4b08398f srl \$f6,\$f7,\$f8
+.*: 4b2b524f dsrl \$f9,\$f10,\$f11
+.*: 4b4e6b0f sra \$f12,\$f13,\$f14
+.*: 4b7183cf dsra \$f15,\$f16,\$f17
+.*: 4b93900c sequ \$f18,\$f19
+.*: 4b95a00d sltu \$f20,\$f21
+.*: 4b97b00e sleu \$f22,\$f23
+.*: 4bb9c00c seq \$f24,\$f25
+.*: 4bbbd00d slt \$f26,\$f27
+.*: 4bbde00e sle \$f28,\$f29
+#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..e87d66e
--- /dev/null
+++ b/gas/testsuite/gas/mips/loongson-3a-mmi.s
@@ -0,0 +1,86 @@
+ .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
+
+fixed_point_insns:
+ add $f0, $f1, $f2
+ addu $f3, $f4, $f5
+ dadd $f6, $f7, $f8
+ sub $f9, $f10, $f11
+ subu $f12, $f13, $f14
+ dsub $f15, $f16, $f17
+ or $f18, $f19, $f20
+ sll $f21, $f22, $f23
+ dsll $f24, $f25, $f26
+ xor $f27, $f28, $f29
+ nor $f0, $f1, $f2
+ and $f3, $f4, $f5
+ srl $f6, $f7, $f8
+ dsrl $f9, $f10, $f11
+ sra $f12, $f13, $f14
+ dsra $f15, $f16, $f17
+ sequ $f18, $f19
+ sltu $f20, $f21
+ sleu $f22, $f23
+ seq $f24, $f25
+ slt $f26, $f27
+ sle $f28, $f29
diff --git a/gas/testsuite/gas/mips/loongson-3a.d b/gas/testsuite/gas/mips/loongson-3a.d
index 4839ff7..108c82d 100644
--- a/gas/testsuite/gas/mips/loongson-3a.d
+++ b/gas/testsuite/gas/mips/loongson-3a.d
@@ -22,88 +22,4 @@ Disassembly of section .text:
.*: 73dfe81e gsmodu \$29,\$30,\$31
.*: 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
-.*: 4b68398c dadd \$f6,\$f7,\$f8
-.*: 4b4b524d sub \$f9,\$f10,\$f11
-.*: 4b0e6b0d subu \$f12,\$f13,\$f14
-.*: 4b7183cd dsub \$f15,\$f16,\$f17
-.*: 4b349c8c or \$f18,\$f19,\$f20
-.*: 4b17b54e sll \$f21,\$f22,\$f23
-.*: 4b3ace0e dsll \$f24,\$f25,\$f26
-.*: 4b9de6c2 xor \$f27,\$f28,\$f29
-.*: 4ba20802 nor \$f0,\$f1,\$f2
-.*: 4bc520c2 and \$f3,\$f4,\$f5
-.*: 4b08398f srl \$f6,\$f7,\$f8
-.*: 4b2b524f dsrl \$f9,\$f10,\$f11
-.*: 4b4e6b0f sra \$f12,\$f13,\$f14
-.*: 4b7183cf dsra \$f15,\$f16,\$f17
-.*: 4b93900c sequ \$f18,\$f19
-.*: 4b95a00d sltu \$f20,\$f21
-.*: 4b97b00e sleu \$f22,\$f23
-.*: 4bb9c00c seq \$f24,\$f25
-.*: 4bbbd00d slt \$f26,\$f27
-.*: 4bbde00e sle \$f28,\$f29
#pass
diff --git a/gas/testsuite/gas/mips/loongson-3a.s b/gas/testsuite/gas/mips/loongson-3a.s
index 0a0f71a..2babb4e 100644
--- a/gas/testsuite/gas/mips/loongson-3a.s
+++ b/gas/testsuite/gas/mips/loongson-3a.s
@@ -17,87 +17,3 @@ integer_insns:
gsmodu $29, $30, $31
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
- dadd $f6, $f7, $f8
- sub $f9, $f10, $f11
- subu $f12, $f13, $f14
- dsub $f15, $f16, $f17
- or $f18, $f19, $f20
- sll $f21, $f22, $f23
- dsll $f24, $f25, $f26
- xor $f27, $f28, $f29
- nor $f0, $f1, $f2
- and $f3, $f4, $f5
- srl $f6, $f7, $f8
- dsrl $f9, $f10, $f11
- sra $f12, $f13, $f14
- dsra $f15, $f16, $f17
- sequ $f18, $f19
- sltu $f20, $f21
- sleu $f22, $f23
- seq $f24, $f25
- slt $f26, $f27
- sle $f28, $f29
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]
}