aboutsummaryrefslogtreecommitdiff
path: root/gas/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gas/testsuite')
-rw-r--r--gas/testsuite/gas/mips/mips.exp4
-rw-r--r--gas/testsuite/gas/mips/mips16-32@mips16-insn-e.d4
-rw-r--r--gas/testsuite/gas/mips/mips16-32@mips16-insn-e.l133
-rw-r--r--gas/testsuite/gas/mips/mips16-32@mips16-insn-t.d4
-rw-r--r--gas/testsuite/gas/mips/mips16-32@mips16-insn-t.l54
-rw-r--r--gas/testsuite/gas/mips/mips16-32@mips16-macro-e.l20
-rw-r--r--gas/testsuite/gas/mips/mips16-64@mips16-insn-e.d4
-rw-r--r--gas/testsuite/gas/mips/mips16-64@mips16-insn-e.l132
-rw-r--r--gas/testsuite/gas/mips/mips16-64@mips16-insn-t.d4
-rw-r--r--gas/testsuite/gas/mips/mips16-64@mips16-insn-t.l16
-rw-r--r--gas/testsuite/gas/mips/mips16-extend-swap.d9
-rw-r--r--gas/testsuite/gas/mips/mips16-insn-e.d3
-rw-r--r--gas/testsuite/gas/mips/mips16-insn-e.l130
-rw-r--r--gas/testsuite/gas/mips/mips16-insn-e.s187
-rw-r--r--gas/testsuite/gas/mips/mips16-insn-t.d3
-rw-r--r--gas/testsuite/gas/mips/mips16-insn-t.l3
-rw-r--r--gas/testsuite/gas/mips/mips16-insn-t.s187
-rw-r--r--gas/testsuite/gas/mips/mips16-macro-e.l40
-rw-r--r--gas/testsuite/gas/mips/mips16e-32@mips16-insn-e.d4
-rw-r--r--gas/testsuite/gas/mips/mips16e-32@mips16-insn-e.l131
-rw-r--r--gas/testsuite/gas/mips/mips16e-32@mips16-insn-t.d4
-rw-r--r--gas/testsuite/gas/mips/mips16e-32@mips16-insn-t.l43
-rw-r--r--gas/testsuite/gas/mips/mips16e-32@mips16-macro-e.l20
23 files changed, 1096 insertions, 43 deletions
diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp
index a5c722c..60d956d 100644
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -877,6 +877,10 @@ if { [istarget mips*-*-vxworks*] } {
[mips_arch_list_matching mips16-32]
run_dump_test_arches "mips16-macro-e" \
[mips_arch_list_matching mips16-32]
+ run_dump_test_arches "mips16-insn-t" \
+ [mips_arch_list_matching mips16-32]
+ run_dump_test_arches "mips16-insn-e" \
+ [mips_arch_list_matching mips16-32]
# Check MIPS16e extensions
run_dump_test_arches "mips16e" [mips_arch_list_matching mips16e-32]
run_dump_test_arches "mips16e-64" [mips_arch_list_matching mips16e-32]
diff --git a/gas/testsuite/gas/mips/mips16-32@mips16-insn-e.d b/gas/testsuite/gas/mips/mips16-32@mips16-insn-e.d
new file mode 100644
index 0000000..28e2f32
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-32@mips16-insn-e.d
@@ -0,0 +1,4 @@
+#as: -32
+#name: MIPS16 explicit extended instructions
+#error-output: mips16-32@mips16-insn-e.l
+#source: mips16-insn-e.s
diff --git a/gas/testsuite/gas/mips/mips16-32@mips16-insn-e.l b/gas/testsuite/gas/mips/mips16-32@mips16-insn-e.l
new file mode 100644
index 0000000..0d43204
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-32@mips16-insn-e.l
@@ -0,0 +1,133 @@
+.*: Assembler messages:
+.*:4: Warning: extended operand requested but not required
+.*:5: Warning: extended operand requested but not required
+.*:8: Warning: extended operand requested but not required
+.*:9: Warning: extended operand requested but not required
+.*:23: Warning: extended operand requested but not required
+.*:24: Error: opcode not supported on this processor: mips1 \(mips1\) `dsll\.e \$16,\$16,8'
+.*:25: Warning: extended operand requested but not required
+.*:26: Warning: extended operand requested but not required
+.*:28: Error: opcode not supported on this processor: mips1 \(mips1\) `ld\.e \$16,0\(\$16\)'
+.*:30: Warning: extended operand requested but not required
+.*:31: Warning: extended operand requested but not required
+.*:32: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.e \$16,\$16,0'
+.*:33: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.e \$16,\$16,0'
+.*:35: Warning: extended operand requested but not required
+.*:36: Warning: extended operand requested but not required
+.*:38: Warning: extended operand requested but not required
+.*:39: Warning: extended operand requested but not required
+.*:41: Warning: extended operand requested but not required
+.*:42: Warning: extended operand requested but not required
+.*:46: Warning: extended operand requested but not required
+.*:47: Warning: extended operand requested but not required
+.*:48: Warning: extended operand requested but not required
+.*:49: Warning: extended operand requested but not required
+.*:50: Warning: extended operand requested but not required
+.*:51: Error: opcode not supported on this processor: mips1 \(mips1\) `restore\.e 128'
+.*:52: Error: opcode not supported on this processor: mips1 \(mips1\) `save\.e 128'
+.*:53: Error: unrecognized extended version of MIPS16 opcode `nop\.e '
+.*:54: Error: unrecognized extended version of MIPS16 opcode `move\.e \$0,\$16'
+.*:55: Error: unrecognized extended version of MIPS16 opcode `move\.e \$16,\$0'
+.*:57: Warning: extended operand requested but not required
+.*:59: Warning: extended operand requested but not required
+.*:60: Warning: extended operand requested but not required
+.*:62: Error: opcode not supported on this processor: mips1 \(mips1\) `sd\.e \$16,0\(\$16\)'
+.*:64: Warning: extended operand requested but not required
+.*:66: Warning: extended operand requested but not required
+.*:68: Warning: extended operand requested but not required
+.*:70: Warning: extended operand requested but not required
+.*:72: Warning: extended operand requested but not required
+.*:74: Warning: extended operand requested but not required
+.*:77: Warning: extended operand requested but not required
+.*:80: Error: opcode not supported on this processor: mips1 \(mips1\) `lwu\.e \$16,0\(\$16\)'
+.*:82: Warning: extended operand requested but not required
+.*:84: Warning: extended operand requested but not required
+.*:86: Warning: extended operand requested but not required
+.*:88: Warning: extended operand requested but not required
+.*:90: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.e \$16,\$16,\$16'
+.*:91: Error: invalid operands `addu\.e \$16,\$16,\$16'
+.*:92: Error: opcode not supported on this processor: mips1 \(mips1\) `dsubu\.e \$16,\$16,\$16'
+.*:93: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$16,\$16,\$16'
+.*:95: Error: unrecognized extended version of MIPS16 opcode `jr\.e \$16'
+.*:97: Error: unrecognized extended version of MIPS16 opcode `j\.e \$16'
+.*:99: Error: unrecognized extended version of MIPS16 opcode `jr\.e \$31'
+.*:101: Error: unrecognized extended version of MIPS16 opcode `j\.e \$31'
+.*:103: Error: unrecognized extended version of MIPS16 opcode `jalr\.e \$16'
+.*:105: Error: unrecognized extended version of MIPS16 opcode `jalr\.e \$31,\$16'
+.*:107: Error: operand 1 must be an immediate expression `jal\.e \$16'
+.*:109: Error: operand 1 must be an immediate expression `jal\.e \$31,\$16'
+.*:111: Error: opcode not supported on this processor: mips1 \(mips1\) `jrc\.e \$16'
+.*:112: Error: opcode not supported on this processor: mips1 \(mips1\) `jrc\.e \$31'
+.*:113: Error: opcode not supported on this processor: mips1 \(mips1\) `jalrc\.e \$16'
+.*:114: Error: opcode not supported on this processor: mips1 \(mips1\) `jalrc\.e \$31,\$16'
+.*:115: Error: opcode not supported on this processor: mips1 \(mips1\) `sdbbp\.e 0'
+.*:116: Error: invalid operands `slt\.e \$16,\$16'
+.*:117: Error: invalid operands `sltu\.e \$16,\$16'
+.*:118: Error: unrecognized extended version of MIPS16 opcode `sllv\.e \$16,\$16'
+.*:119: Error: invalid operands `sll\.e \$16,\$16'
+.*:120: Error: unrecognized extended version of MIPS16 opcode `break\.e 0'
+.*:121: Error: unrecognized extended version of MIPS16 opcode `srlv\.e \$16,\$16'
+.*:122: Error: invalid operands `srl\.e \$16,\$16'
+.*:123: Error: unrecognized extended version of MIPS16 opcode `srav\.e \$16,\$16'
+.*:124: Error: invalid operands `sra\.e \$16,\$16'
+.*:125: Error: opcode not supported on this processor: mips1 \(mips1\) `dsrl\.e \$16,8'
+.*:126: Error: unrecognized extended version of MIPS16 opcode `entry\.e '
+.*:127: Error: unrecognized extended version of MIPS16 opcode `entry\.e \$31'
+.*:128: Error: unrecognized extended version of MIPS16 opcode `exit\.e \$f0'
+.*:129: Error: unrecognized extended version of MIPS16 opcode `exit\.e'
+.*:130: Error: invalid operands `cmp\.e \$16,\$16'
+.*:131: Error: unrecognized extended version of MIPS16 opcode `neg\.e \$16,\$16'
+.*:132: Error: unrecognized extended version of MIPS16 opcode `and\.e \$16,\$16'
+.*:133: Error: unrecognized extended version of MIPS16 opcode `or\.e \$16,\$16'
+.*:134: Error: unrecognized extended version of MIPS16 opcode `xor\.e \$16,\$16'
+.*:135: Error: unrecognized extended version of MIPS16 opcode `not\.e \$16,\$16'
+.*:136: Error: unrecognized extended version of MIPS16 opcode `mfhi\.e \$16'
+.*:137: Error: opcode not supported on this processor: mips1 \(mips1\) `zeb\.e \$16'
+.*:138: Error: opcode not supported on this processor: mips1 \(mips1\) `zeh\.e \$16'
+.*:139: Error: opcode not supported on this processor: mips1 \(mips1\) `zew\.e \$16'
+.*:140: Error: opcode not supported on this processor: mips1 \(mips1\) `seb\.e \$16'
+.*:141: Error: opcode not supported on this processor: mips1 \(mips1\) `seh\.e \$16'
+.*:142: Error: opcode not supported on this processor: mips1 \(mips1\) `sew\.e \$16'
+.*:143: Error: unrecognized extended version of MIPS16 opcode `mflo\.e \$16'
+.*:144: Error: opcode not supported on this processor: mips1 \(mips1\) `dsra\.e \$16,8'
+.*:145: Error: opcode not supported on this processor: mips1 \(mips1\) `dsllv\.e \$16,\$16'
+.*:146: Error: opcode not supported on this processor: mips1 \(mips1\) `dsll\.e \$16,\$16'
+.*:147: Error: opcode not supported on this processor: mips1 \(mips1\) `dsrlv\.e \$16,\$16'
+.*:148: Error: opcode not supported on this processor: mips1 \(mips1\) `dsrl\.e \$16,\$16'
+.*:149: Error: opcode not supported on this processor: mips1 \(mips1\) `dsrav\.e \$16,\$16'
+.*:150: Error: opcode not supported on this processor: mips1 \(mips1\) `dsra\.e \$16,\$16'
+.*:151: Error: unrecognized extended version of MIPS16 opcode `mult\.e \$16,\$16'
+.*:152: Error: unrecognized extended version of MIPS16 opcode `multu\.e \$16,\$16'
+.*:153: Error: unrecognized extended version of MIPS16 opcode `div\.e \$0,\$16,\$16'
+.*:154: Error: unrecognized extended version of MIPS16 opcode `rem\.e \$0,\$16,\$16'
+.*:155: Error: unrecognized extended version of MIPS16 opcode `divu\.e \$0,\$16,\$16'
+.*:156: Error: unrecognized extended version of MIPS16 opcode `remu\.e \$0,\$16,\$16'
+.*:157: Error: opcode not supported on this processor: mips1 \(mips1\) `dmult\.e \$16,\$16'
+.*:158: Error: opcode not supported on this processor: mips1 \(mips1\) `dmultu\.e \$16,\$16'
+.*:159: Error: opcode not supported on this processor: mips1 \(mips1\) `ddiv\.e \$0,\$16,\$16'
+.*:160: Error: opcode not supported on this processor: mips1 \(mips1\) `drem\.e \$0,\$16,\$16'
+.*:161: Error: opcode not supported on this processor: mips1 \(mips1\) `ddivu\.e \$0,\$16,\$16'
+.*:162: Error: opcode not supported on this processor: mips1 \(mips1\) `dremu\.e \$0,\$16,\$16'
+.*:164: Error: unrecognized extended version of MIPS16 opcode `extend\.e 0'
+.*:166: Error: opcode not supported on this processor: mips1 \(mips1\) `ld\.e \$16,0\(\$29\)'
+.*:167: Error: opcode not supported on this processor: mips1 \(mips1\) `sd\.e \$16,0\(\$29\)'
+.*:168: Error: opcode not supported on this processor: mips1 \(mips1\) `sd\.e \$31,0\(\$29\)'
+.*:169: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.e \$29,0'
+.*:170: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.e \$29,\$29,0'
+.*:171: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.e \$29,0'
+.*:172: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.e \$29,\$29,0'
+.*:174: Error: opcode not supported on this processor: mips1 \(mips1\) `ld\.e \$16,0\(\$pc\)'
+.*:175: Error: opcode not supported on this processor: mips1 \(mips1\) `ld\.e \$16,\.-3'
+.*:176: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.e \$16,0'
+.*:177: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.e \$16,0'
+.*:179: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.e \$16,\$pc,0'
+.*:180: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.e \$16,\$pc,0'
+.*:181: Error: opcode not supported on this processor: mips1 \(mips1\) `dla\.e \$16,\.-1'
+.*:182: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.e \$16,\$sp,0'
+.*:183: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.e \$16,\$sp,0'
+.*:10: Warning: extended operand requested but not required
+.*:12: Warning: extended operand requested but not required
+.*:19: Warning: extended operand requested but not required
+.*:21: Warning: extended operand requested but not required
+.*:44: Warning: extended operand requested but not required
+.*:45: Warning: extended operand requested but not required
diff --git a/gas/testsuite/gas/mips/mips16-32@mips16-insn-t.d b/gas/testsuite/gas/mips/mips16-32@mips16-insn-t.d
new file mode 100644
index 0000000..499e6aa
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-32@mips16-insn-t.d
@@ -0,0 +1,4 @@
+#as: -32
+#name: MIPS16 explicit unextended instructions
+#error-output: mips16-32@mips16-insn-t.l
+#source: mips16-insn-t.s
diff --git a/gas/testsuite/gas/mips/mips16-32@mips16-insn-t.l b/gas/testsuite/gas/mips/mips16-32@mips16-insn-t.l
new file mode 100644
index 0000000..a632d59
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-32@mips16-insn-t.l
@@ -0,0 +1,54 @@
+.*: Assembler messages:
+.*:14: Error: invalid operands `jal\.t 0'
+.*:16: Error: unrecognized unextended version of MIPS16 opcode `jalx\.t 0'
+.*:24: Error: opcode not supported on this processor: mips1 \(mips1\) `dsll\.t \$16,\$16,8'
+.*:28: Error: opcode not supported on this processor: mips1 \(mips1\) `ld\.t \$16,0\(\$16\)'
+.*:32: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.t \$16,\$16,0'
+.*:33: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.t \$16,\$16,0'
+.*:51: Error: opcode not supported on this processor: mips1 \(mips1\) `restore\.t 128'
+.*:52: Error: opcode not supported on this processor: mips1 \(mips1\) `save\.t 128'
+.*:62: Error: opcode not supported on this processor: mips1 \(mips1\) `sd\.t \$16,0\(\$16\)'
+.*:80: Error: opcode not supported on this processor: mips1 \(mips1\) `lwu\.t \$16,0\(\$16\)'
+.*:90: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.t \$16,\$16,\$16'
+.*:92: Error: opcode not supported on this processor: mips1 \(mips1\) `dsubu\.t \$16,\$16,\$16'
+.*:111: Error: opcode not supported on this processor: mips1 \(mips1\) `jrc\.t \$16'
+.*:112: Error: opcode not supported on this processor: mips1 \(mips1\) `jrc\.t \$31'
+.*:113: Error: opcode not supported on this processor: mips1 \(mips1\) `jalrc\.t \$16'
+.*:114: Error: opcode not supported on this processor: mips1 \(mips1\) `jalrc\.t \$31,\$16'
+.*:115: Error: opcode not supported on this processor: mips1 \(mips1\) `sdbbp\.t 0'
+.*:125: Error: opcode not supported on this processor: mips1 \(mips1\) `dsrl\.t \$16,8'
+.*:137: Error: opcode not supported on this processor: mips1 \(mips1\) `zeb\.t \$16'
+.*:138: Error: opcode not supported on this processor: mips1 \(mips1\) `zeh\.t \$16'
+.*:139: Error: opcode not supported on this processor: mips1 \(mips1\) `zew\.t \$16'
+.*:140: Error: opcode not supported on this processor: mips1 \(mips1\) `seb\.t \$16'
+.*:141: Error: opcode not supported on this processor: mips1 \(mips1\) `seh\.t \$16'
+.*:142: Error: opcode not supported on this processor: mips1 \(mips1\) `sew\.t \$16'
+.*:144: Error: opcode not supported on this processor: mips1 \(mips1\) `dsra\.t \$16,8'
+.*:145: Error: opcode not supported on this processor: mips1 \(mips1\) `dsllv\.t \$16,\$16'
+.*:146: Error: opcode not supported on this processor: mips1 \(mips1\) `dsll\.t \$16,\$16'
+.*:147: Error: opcode not supported on this processor: mips1 \(mips1\) `dsrlv\.t \$16,\$16'
+.*:148: Error: opcode not supported on this processor: mips1 \(mips1\) `dsrl\.t \$16,\$16'
+.*:149: Error: opcode not supported on this processor: mips1 \(mips1\) `dsrav\.t \$16,\$16'
+.*:150: Error: opcode not supported on this processor: mips1 \(mips1\) `dsra\.t \$16,\$16'
+.*:157: Error: opcode not supported on this processor: mips1 \(mips1\) `dmult\.t \$16,\$16'
+.*:158: Error: opcode not supported on this processor: mips1 \(mips1\) `dmultu\.t \$16,\$16'
+.*:159: Error: opcode not supported on this processor: mips1 \(mips1\) `ddiv\.t \$0,\$16,\$16'
+.*:160: Error: opcode not supported on this processor: mips1 \(mips1\) `drem\.t \$0,\$16,\$16'
+.*:161: Error: opcode not supported on this processor: mips1 \(mips1\) `ddivu\.t \$0,\$16,\$16'
+.*:162: Error: opcode not supported on this processor: mips1 \(mips1\) `dremu\.t \$0,\$16,\$16'
+.*:166: Error: opcode not supported on this processor: mips1 \(mips1\) `ld\.t \$16,0\(\$29\)'
+.*:167: Error: opcode not supported on this processor: mips1 \(mips1\) `sd\.t \$16,0\(\$29\)'
+.*:168: Error: opcode not supported on this processor: mips1 \(mips1\) `sd\.t \$31,0\(\$29\)'
+.*:169: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.t \$29,0'
+.*:170: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.t \$29,\$29,0'
+.*:171: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.t \$29,0'
+.*:172: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.t \$29,\$29,0'
+.*:174: Error: opcode not supported on this processor: mips1 \(mips1\) `ld\.t \$16,0\(\$pc\)'
+.*:175: Error: opcode not supported on this processor: mips1 \(mips1\) `ld\.t \$16,\.-3'
+.*:176: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.t \$16,0'
+.*:177: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.t \$16,0'
+.*:179: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.t \$16,\$pc,0'
+.*:180: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.t \$16,\$pc,0'
+.*:181: Error: opcode not supported on this processor: mips1 \(mips1\) `dla\.t \$16,\.-1'
+.*:182: Error: opcode not supported on this processor: mips1 \(mips1\) `daddiu\.t \$16,\$sp,0'
+.*:183: Error: opcode not supported on this processor: mips1 \(mips1\) `daddu\.t \$16,\$sp,0'
diff --git a/gas/testsuite/gas/mips/mips16-32@mips16-macro-e.l b/gas/testsuite/gas/mips/mips16-32@mips16-macro-e.l
index ace5989..a66559b 100644
--- a/gas/testsuite/gas/mips/mips16-32@mips16-macro-e.l
+++ b/gas/testsuite/gas/mips/mips16-32@mips16-macro-e.l
@@ -1,20 +1,20 @@
.*: Assembler messages:
-.*:4: Error: invalid operands `div\.e \$2,\$3,\$4'
-.*:5: Error: invalid operands `divu\.e \$3,\$4,\$5'
+.*:4: Error: unrecognized extended version of MIPS16 opcode `div\.e \$2,\$3,\$4'
+.*:5: Error: unrecognized extended version of MIPS16 opcode `divu\.e \$3,\$4,\$5'
.*:6: Error: opcode not supported on this processor: mips1 \(mips1\) `ddiv\.e \$4,\$5,\$6'
.*:7: Error: opcode not supported on this processor: mips1 \(mips1\) `ddivu\.e \$5,\$6,\$7'
-.*:8: Error: invalid operands `rem\.e \$6,\$7,\$16'
-.*:9: Error: invalid operands `remu\.e \$6,\$7,\$17'
+.*:8: Error: unrecognized extended version of MIPS16 opcode `rem\.e \$6,\$7,\$16'
+.*:9: Error: unrecognized extended version of MIPS16 opcode `remu\.e \$6,\$7,\$17'
.*:10: Error: opcode not supported on this processor: mips1 \(mips1\) `drem\.e \$2,\$3,\$4'
.*:11: Error: opcode not supported on this processor: mips1 \(mips1\) `dremu\.e \$3,\$4,\$5'
.*:12: Error: unrecognized extended version of MIPS16 opcode `mul\.e \$4,\$5,\$6'
.*:13: Error: opcode not supported on this processor: mips1 \(mips1\) `dmul\.e \$5,\$6,\$7'
-.*:14: Error: invalid operands `subu\.e \$2,-32767'
-.*:15: Error: invalid operands `subu\.e \$3,16'
-.*:16: Error: invalid operands `subu\.e \$4,32768'
-.*:17: Error: invalid operands `subu\.e \$3,\$7,-16383'
-.*:18: Error: invalid operands `subu\.e \$4,\$16,4'
-.*:19: Error: invalid operands `subu\.e \$5,\$17,16384'
+.*:14: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$2,-32767'
+.*:15: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$3,16'
+.*:16: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$4,32768'
+.*:17: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$3,\$7,-16383'
+.*:18: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$4,\$16,4'
+.*:19: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$5,\$17,16384'
.*:20: Error: opcode not supported on this processor: mips1 \(mips1\) `dsubu\.e \$4,-32767'
.*:21: Error: opcode not supported on this processor: mips1 \(mips1\) `dsubu\.e \$6,6'
.*:22: Error: opcode not supported on this processor: mips1 \(mips1\) `dsubu\.e \$7,32768'
diff --git a/gas/testsuite/gas/mips/mips16-64@mips16-insn-e.d b/gas/testsuite/gas/mips/mips16-64@mips16-insn-e.d
new file mode 100644
index 0000000..7b1814d
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-64@mips16-insn-e.d
@@ -0,0 +1,4 @@
+#as: -32
+#name: MIPS16 explicit extended instructions
+#error-output: mips16-64@mips16-insn-e.l
+#source: mips16-insn-e.s
diff --git a/gas/testsuite/gas/mips/mips16-64@mips16-insn-e.l b/gas/testsuite/gas/mips/mips16-64@mips16-insn-e.l
new file mode 100644
index 0000000..3cf4de7
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-64@mips16-insn-e.l
@@ -0,0 +1,132 @@
+.*: Assembler messages:
+.*:4: Warning: extended operand requested but not required
+.*:5: Warning: extended operand requested but not required
+.*:8: Warning: extended operand requested but not required
+.*:9: Warning: extended operand requested but not required
+.*:23: Warning: extended operand requested but not required
+.*:24: Warning: extended operand requested but not required
+.*:25: Warning: extended operand requested but not required
+.*:26: Warning: extended operand requested but not required
+.*:28: Warning: extended operand requested but not required
+.*:30: Warning: extended operand requested but not required
+.*:31: Warning: extended operand requested but not required
+.*:32: Warning: extended operand requested but not required
+.*:33: Warning: extended operand requested but not required
+.*:35: Warning: extended operand requested but not required
+.*:36: Warning: extended operand requested but not required
+.*:38: Warning: extended operand requested but not required
+.*:39: Warning: extended operand requested but not required
+.*:41: Warning: extended operand requested but not required
+.*:42: Warning: extended operand requested but not required
+.*:46: Warning: extended operand requested but not required
+.*:47: Warning: extended operand requested but not required
+.*:48: Warning: extended operand requested but not required
+.*:49: Warning: extended operand requested but not required
+.*:50: Warning: extended operand requested but not required
+.*:51: Error: opcode not supported on this processor: mips3 \(mips3\) `restore\.e 128'
+.*:52: Error: opcode not supported on this processor: mips3 \(mips3\) `save\.e 128'
+.*:53: Error: unrecognized extended version of MIPS16 opcode `nop\.e '
+.*:54: Error: unrecognized extended version of MIPS16 opcode `move\.e \$0,\$16'
+.*:55: Error: unrecognized extended version of MIPS16 opcode `move\.e \$16,\$0'
+.*:57: Warning: extended operand requested but not required
+.*:59: Warning: extended operand requested but not required
+.*:60: Warning: extended operand requested but not required
+.*:62: Warning: extended operand requested but not required
+.*:64: Warning: extended operand requested but not required
+.*:66: Warning: extended operand requested but not required
+.*:68: Warning: extended operand requested but not required
+.*:70: Warning: extended operand requested but not required
+.*:72: Warning: extended operand requested but not required
+.*:74: Warning: extended operand requested but not required
+.*:77: Warning: extended operand requested but not required
+.*:80: Warning: extended operand requested but not required
+.*:82: Warning: extended operand requested but not required
+.*:84: Warning: extended operand requested but not required
+.*:86: Warning: extended operand requested but not required
+.*:88: Warning: extended operand requested but not required
+.*:90: Error: invalid operands `daddu\.e \$16,\$16,\$16'
+.*:91: Error: invalid operands `addu\.e \$16,\$16,\$16'
+.*:92: Error: unrecognized extended version of MIPS16 opcode `dsubu\.e \$16,\$16,\$16'
+.*:93: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$16,\$16,\$16'
+.*:95: Error: unrecognized extended version of MIPS16 opcode `jr\.e \$16'
+.*:97: Error: unrecognized extended version of MIPS16 opcode `j\.e \$16'
+.*:99: Error: unrecognized extended version of MIPS16 opcode `jr\.e \$31'
+.*:101: Error: unrecognized extended version of MIPS16 opcode `j\.e \$31'
+.*:103: Error: unrecognized extended version of MIPS16 opcode `jalr\.e \$16'
+.*:105: Error: unrecognized extended version of MIPS16 opcode `jalr\.e \$31,\$16'
+.*:107: Error: operand 1 must be an immediate expression `jal\.e \$16'
+.*:109: Error: operand 1 must be an immediate expression `jal\.e \$31,\$16'
+.*:111: Error: opcode not supported on this processor: mips3 \(mips3\) `jrc\.e \$16'
+.*:112: Error: opcode not supported on this processor: mips3 \(mips3\) `jrc\.e \$31'
+.*:113: Error: opcode not supported on this processor: mips3 \(mips3\) `jalrc\.e \$16'
+.*:114: Error: opcode not supported on this processor: mips3 \(mips3\) `jalrc\.e \$31,\$16'
+.*:115: Error: opcode not supported on this processor: mips3 \(mips3\) `sdbbp\.e 0'
+.*:116: Error: invalid operands `slt\.e \$16,\$16'
+.*:117: Error: invalid operands `sltu\.e \$16,\$16'
+.*:118: Error: unrecognized extended version of MIPS16 opcode `sllv\.e \$16,\$16'
+.*:119: Error: invalid operands `sll\.e \$16,\$16'
+.*:120: Error: unrecognized extended version of MIPS16 opcode `break\.e 0'
+.*:121: Error: unrecognized extended version of MIPS16 opcode `srlv\.e \$16,\$16'
+.*:122: Error: invalid operands `srl\.e \$16,\$16'
+.*:123: Error: unrecognized extended version of MIPS16 opcode `srav\.e \$16,\$16'
+.*:124: Error: invalid operands `sra\.e \$16,\$16'
+.*:125: Warning: extended operand requested but not required
+.*:126: Error: unrecognized extended version of MIPS16 opcode `entry\.e '
+.*:127: Error: unrecognized extended version of MIPS16 opcode `entry\.e \$31'
+.*:128: Error: unrecognized extended version of MIPS16 opcode `exit\.e \$f0'
+.*:129: Error: unrecognized extended version of MIPS16 opcode `exit\.e'
+.*:130: Error: invalid operands `cmp\.e \$16,\$16'
+.*:131: Error: unrecognized extended version of MIPS16 opcode `neg\.e \$16,\$16'
+.*:132: Error: unrecognized extended version of MIPS16 opcode `and\.e \$16,\$16'
+.*:133: Error: unrecognized extended version of MIPS16 opcode `or\.e \$16,\$16'
+.*:134: Error: unrecognized extended version of MIPS16 opcode `xor\.e \$16,\$16'
+.*:135: Error: unrecognized extended version of MIPS16 opcode `not\.e \$16,\$16'
+.*:136: Error: unrecognized extended version of MIPS16 opcode `mfhi\.e \$16'
+.*:137: Error: opcode not supported on this processor: mips3 \(mips3\) `zeb\.e \$16'
+.*:138: Error: opcode not supported on this processor: mips3 \(mips3\) `zeh\.e \$16'
+.*:139: Error: opcode not supported on this processor: mips3 \(mips3\) `zew\.e \$16'
+.*:140: Error: opcode not supported on this processor: mips3 \(mips3\) `seb\.e \$16'
+.*:141: Error: opcode not supported on this processor: mips3 \(mips3\) `seh\.e \$16'
+.*:142: Error: opcode not supported on this processor: mips3 \(mips3\) `sew\.e \$16'
+.*:143: Error: unrecognized extended version of MIPS16 opcode `mflo\.e \$16'
+.*:144: Warning: extended operand requested but not required
+.*:145: Error: unrecognized extended version of MIPS16 opcode `dsllv\.e \$16,\$16'
+.*:146: Error: invalid operands `dsll\.e \$16,\$16'
+.*:147: Error: unrecognized extended version of MIPS16 opcode `dsrlv\.e \$16,\$16'
+.*:148: Error: invalid operands `dsrl\.e \$16,\$16'
+.*:149: Error: unrecognized extended version of MIPS16 opcode `dsrav\.e \$16,\$16'
+.*:150: Error: invalid operands `dsra\.e \$16,\$16'
+.*:151: Error: unrecognized extended version of MIPS16 opcode `mult\.e \$16,\$16'
+.*:152: Error: unrecognized extended version of MIPS16 opcode `multu\.e \$16,\$16'
+.*:153: Error: unrecognized extended version of MIPS16 opcode `div\.e \$0,\$16,\$16'
+.*:154: Error: unrecognized extended version of MIPS16 opcode `rem\.e \$0,\$16,\$16'
+.*:155: Error: unrecognized extended version of MIPS16 opcode `divu\.e \$0,\$16,\$16'
+.*:156: Error: unrecognized extended version of MIPS16 opcode `remu\.e \$0,\$16,\$16'
+.*:157: Error: unrecognized extended version of MIPS16 opcode `dmult\.e \$16,\$16'
+.*:158: Error: unrecognized extended version of MIPS16 opcode `dmultu\.e \$16,\$16'
+.*:159: Error: unrecognized extended version of MIPS16 opcode `ddiv\.e \$0,\$16,\$16'
+.*:160: Error: unrecognized extended version of MIPS16 opcode `drem\.e \$0,\$16,\$16'
+.*:161: Error: unrecognized extended version of MIPS16 opcode `ddivu\.e \$0,\$16,\$16'
+.*:162: Error: unrecognized extended version of MIPS16 opcode `dremu\.e \$0,\$16,\$16'
+.*:164: Error: unrecognized extended version of MIPS16 opcode `extend\.e 0'
+.*:166: Warning: extended operand requested but not required
+.*:167: Warning: extended operand requested but not required
+.*:168: Warning: extended operand requested but not required
+.*:169: Warning: extended operand requested but not required
+.*:170: Warning: extended operand requested but not required
+.*:171: Warning: extended operand requested but not required
+.*:172: Warning: extended operand requested but not required
+.*:174: Warning: extended operand requested but not required
+.*:176: Warning: extended operand requested but not required
+.*:177: Warning: extended operand requested but not required
+.*:179: Warning: extended operand requested but not required
+.*:180: Warning: extended operand requested but not required
+.*:182: Warning: extended operand requested but not required
+.*:183: Warning: extended operand requested but not required
+.*:10: Warning: extended operand requested but not required
+.*:12: Warning: extended operand requested but not required
+.*:19: Warning: extended operand requested but not required
+.*:21: Warning: extended operand requested but not required
+.*:44: Warning: extended operand requested but not required
+.*:45: Warning: extended operand requested but not required
+.*:181: Warning: extended operand requested but not required
diff --git a/gas/testsuite/gas/mips/mips16-64@mips16-insn-t.d b/gas/testsuite/gas/mips/mips16-64@mips16-insn-t.d
new file mode 100644
index 0000000..57ea2be
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-64@mips16-insn-t.d
@@ -0,0 +1,4 @@
+#as: -32
+#name: MIPS16 explicit unextended instructions
+#error-output: mips16-64@mips16-insn-t.l
+#source: mips16-insn-t.s
diff --git a/gas/testsuite/gas/mips/mips16-64@mips16-insn-t.l b/gas/testsuite/gas/mips/mips16-64@mips16-insn-t.l
new file mode 100644
index 0000000..3f9c578
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-64@mips16-insn-t.l
@@ -0,0 +1,16 @@
+.*: Assembler messages:
+.*:14: Error: invalid operands `jal\.t 0'
+.*:16: Error: unrecognized unextended version of MIPS16 opcode `jalx\.t 0'
+.*:51: Error: opcode not supported on this processor: mips3 \(mips3\) `restore\.t 128'
+.*:52: Error: opcode not supported on this processor: mips3 \(mips3\) `save\.t 128'
+.*:111: Error: opcode not supported on this processor: mips3 \(mips3\) `jrc\.t \$16'
+.*:112: Error: opcode not supported on this processor: mips3 \(mips3\) `jrc\.t \$31'
+.*:113: Error: opcode not supported on this processor: mips3 \(mips3\) `jalrc\.t \$16'
+.*:114: Error: opcode not supported on this processor: mips3 \(mips3\) `jalrc\.t \$31,\$16'
+.*:115: Error: opcode not supported on this processor: mips3 \(mips3\) `sdbbp\.t 0'
+.*:137: Error: opcode not supported on this processor: mips3 \(mips3\) `zeb\.t \$16'
+.*:138: Error: opcode not supported on this processor: mips3 \(mips3\) `zeh\.t \$16'
+.*:139: Error: opcode not supported on this processor: mips3 \(mips3\) `zew\.t \$16'
+.*:140: Error: opcode not supported on this processor: mips3 \(mips3\) `seb\.t \$16'
+.*:141: Error: opcode not supported on this processor: mips3 \(mips3\) `seh\.t \$16'
+.*:142: Error: opcode not supported on this processor: mips3 \(mips3\) `sew\.t \$16'
diff --git a/gas/testsuite/gas/mips/mips16-extend-swap.d b/gas/testsuite/gas/mips/mips16-extend-swap.d
index eb9dd73..d60ab7f 100644
--- a/gas/testsuite/gas/mips/mips16-extend-swap.d
+++ b/gas/testsuite/gas/mips/mips16-extend-swap.d
@@ -13,10 +13,13 @@ Disassembly of section \.text:
[0-9a-f]+ <[^>]*> f123 extend 0x123
[0-9a-f]+ <[^>]*> 1c00 0000 jalx 00000000 <foo>
[0-9a-f]+ <[^>]*> 6500 nop
-[0-9a-f]+ <[^>]*> f123 eb00 jr v1
+[0-9a-f]+ <[^>]*> f123 extend 0x123
+[0-9a-f]+ <[^>]*> eb00 jr v1
[0-9a-f]+ <[^>]*> 6500 nop
-[0-9a-f]+ <[^>]*> f123 e820 jr ra
+[0-9a-f]+ <[^>]*> f123 extend 0x123
+[0-9a-f]+ <[^>]*> e820 jr ra
[0-9a-f]+ <[^>]*> 6500 nop
-[0-9a-f]+ <[^>]*> f123 eb40 jalr v1
+[0-9a-f]+ <[^>]*> f123 extend 0x123
+[0-9a-f]+ <[^>]*> eb40 jalr v1
[0-9a-f]+ <[^>]*> 6500 nop
\.\.\.
diff --git a/gas/testsuite/gas/mips/mips16-insn-e.d b/gas/testsuite/gas/mips/mips16-insn-e.d
new file mode 100644
index 0000000..5a28fea
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-insn-e.d
@@ -0,0 +1,3 @@
+#as: -32
+#name: MIPS16 explicit extended instructions
+#error-output: mips16-insn-e.l
diff --git a/gas/testsuite/gas/mips/mips16-insn-e.l b/gas/testsuite/gas/mips/mips16-insn-e.l
new file mode 100644
index 0000000..3ac944e
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-insn-e.l
@@ -0,0 +1,130 @@
+.*: Assembler messages:
+.*:4: Warning: extended operand requested but not required
+.*:5: Warning: extended operand requested but not required
+.*:8: Warning: extended operand requested but not required
+.*:9: Warning: extended operand requested but not required
+.*:23: Warning: extended operand requested but not required
+.*:24: Warning: extended operand requested but not required
+.*:25: Warning: extended operand requested but not required
+.*:26: Warning: extended operand requested but not required
+.*:28: Warning: extended operand requested but not required
+.*:30: Warning: extended operand requested but not required
+.*:31: Warning: extended operand requested but not required
+.*:32: Warning: extended operand requested but not required
+.*:33: Warning: extended operand requested but not required
+.*:35: Warning: extended operand requested but not required
+.*:36: Warning: extended operand requested but not required
+.*:38: Warning: extended operand requested but not required
+.*:39: Warning: extended operand requested but not required
+.*:41: Warning: extended operand requested but not required
+.*:42: Warning: extended operand requested but not required
+.*:46: Warning: extended operand requested but not required
+.*:47: Warning: extended operand requested but not required
+.*:48: Warning: extended operand requested but not required
+.*:49: Warning: extended operand requested but not required
+.*:50: Warning: extended operand requested but not required
+.*:53: Error: unrecognized extended version of MIPS16 opcode `nop\.e '
+.*:54: Error: unrecognized extended version of MIPS16 opcode `move\.e \$0,\$16'
+.*:55: Error: unrecognized extended version of MIPS16 opcode `move\.e \$16,\$0'
+.*:57: Warning: extended operand requested but not required
+.*:59: Warning: extended operand requested but not required
+.*:60: Warning: extended operand requested but not required
+.*:62: Warning: extended operand requested but not required
+.*:64: Warning: extended operand requested but not required
+.*:66: Warning: extended operand requested but not required
+.*:68: Warning: extended operand requested but not required
+.*:70: Warning: extended operand requested but not required
+.*:72: Warning: extended operand requested but not required
+.*:74: Warning: extended operand requested but not required
+.*:77: Warning: extended operand requested but not required
+.*:80: Warning: extended operand requested but not required
+.*:82: Warning: extended operand requested but not required
+.*:84: Warning: extended operand requested but not required
+.*:86: Warning: extended operand requested but not required
+.*:88: Warning: extended operand requested but not required
+.*:90: Error: invalid operands `daddu\.e \$16,\$16,\$16'
+.*:91: Error: invalid operands `addu\.e \$16,\$16,\$16'
+.*:92: Error: unrecognized extended version of MIPS16 opcode `dsubu\.e \$16,\$16,\$16'
+.*:93: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$16,\$16,\$16'
+.*:95: Error: unrecognized extended version of MIPS16 opcode `jr\.e \$16'
+.*:97: Error: unrecognized extended version of MIPS16 opcode `j\.e \$16'
+.*:99: Error: unrecognized extended version of MIPS16 opcode `jr\.e \$31'
+.*:101: Error: unrecognized extended version of MIPS16 opcode `j\.e \$31'
+.*:103: Error: unrecognized extended version of MIPS16 opcode `jalr\.e \$16'
+.*:105: Error: unrecognized extended version of MIPS16 opcode `jalr\.e \$31,\$16'
+.*:107: Error: operand 1 must be an immediate expression `jal\.e \$16'
+.*:109: Error: operand 1 must be an immediate expression `jal\.e \$31,\$16'
+.*:111: Error: unrecognized extended version of MIPS16 opcode `jrc\.e \$16'
+.*:112: Error: unrecognized extended version of MIPS16 opcode `jrc\.e \$31'
+.*:113: Error: unrecognized extended version of MIPS16 opcode `jalrc\.e \$16'
+.*:114: Error: unrecognized extended version of MIPS16 opcode `jalrc\.e \$31,\$16'
+.*:115: Error: unrecognized extended version of MIPS16 opcode `sdbbp\.e 0'
+.*:116: Error: invalid operands `slt\.e \$16,\$16'
+.*:117: Error: invalid operands `sltu\.e \$16,\$16'
+.*:118: Error: unrecognized extended version of MIPS16 opcode `sllv\.e \$16,\$16'
+.*:119: Error: invalid operands `sll\.e \$16,\$16'
+.*:120: Error: unrecognized extended version of MIPS16 opcode `break\.e 0'
+.*:121: Error: unrecognized extended version of MIPS16 opcode `srlv\.e \$16,\$16'
+.*:122: Error: invalid operands `srl\.e \$16,\$16'
+.*:123: Error: unrecognized extended version of MIPS16 opcode `srav\.e \$16,\$16'
+.*:124: Error: invalid operands `sra\.e \$16,\$16'
+.*:125: Warning: extended operand requested but not required
+.*:126: Error: unrecognized extended version of MIPS16 opcode `entry\.e '
+.*:127: Error: unrecognized extended version of MIPS16 opcode `entry\.e \$31'
+.*:128: Error: unrecognized extended version of MIPS16 opcode `exit\.e \$f0'
+.*:129: Error: unrecognized extended version of MIPS16 opcode `exit\.e'
+.*:130: Error: invalid operands `cmp\.e \$16,\$16'
+.*:131: Error: unrecognized extended version of MIPS16 opcode `neg\.e \$16,\$16'
+.*:132: Error: unrecognized extended version of MIPS16 opcode `and\.e \$16,\$16'
+.*:133: Error: unrecognized extended version of MIPS16 opcode `or\.e \$16,\$16'
+.*:134: Error: unrecognized extended version of MIPS16 opcode `xor\.e \$16,\$16'
+.*:135: Error: unrecognized extended version of MIPS16 opcode `not\.e \$16,\$16'
+.*:136: Error: unrecognized extended version of MIPS16 opcode `mfhi\.e \$16'
+.*:137: Error: unrecognized extended version of MIPS16 opcode `zeb\.e \$16'
+.*:138: Error: unrecognized extended version of MIPS16 opcode `zeh\.e \$16'
+.*:139: Error: unrecognized extended version of MIPS16 opcode `zew\.e \$16'
+.*:140: Error: unrecognized extended version of MIPS16 opcode `seb\.e \$16'
+.*:141: Error: unrecognized extended version of MIPS16 opcode `seh\.e \$16'
+.*:142: Error: unrecognized extended version of MIPS16 opcode `sew\.e \$16'
+.*:143: Error: unrecognized extended version of MIPS16 opcode `mflo\.e \$16'
+.*:144: Warning: extended operand requested but not required
+.*:145: Error: unrecognized extended version of MIPS16 opcode `dsllv\.e \$16,\$16'
+.*:146: Error: invalid operands `dsll\.e \$16,\$16'
+.*:147: Error: unrecognized extended version of MIPS16 opcode `dsrlv\.e \$16,\$16'
+.*:148: Error: invalid operands `dsrl\.e \$16,\$16'
+.*:149: Error: unrecognized extended version of MIPS16 opcode `dsrav\.e \$16,\$16'
+.*:150: Error: invalid operands `dsra\.e \$16,\$16'
+.*:151: Error: unrecognized extended version of MIPS16 opcode `mult\.e \$16,\$16'
+.*:152: Error: unrecognized extended version of MIPS16 opcode `multu\.e \$16,\$16'
+.*:153: Error: unrecognized extended version of MIPS16 opcode `div\.e \$0,\$16,\$16'
+.*:154: Error: unrecognized extended version of MIPS16 opcode `rem\.e \$0,\$16,\$16'
+.*:155: Error: unrecognized extended version of MIPS16 opcode `divu\.e \$0,\$16,\$16'
+.*:156: Error: unrecognized extended version of MIPS16 opcode `remu\.e \$0,\$16,\$16'
+.*:157: Error: unrecognized extended version of MIPS16 opcode `dmult\.e \$16,\$16'
+.*:158: Error: unrecognized extended version of MIPS16 opcode `dmultu\.e \$16,\$16'
+.*:159: Error: unrecognized extended version of MIPS16 opcode `ddiv\.e \$0,\$16,\$16'
+.*:160: Error: unrecognized extended version of MIPS16 opcode `drem\.e \$0,\$16,\$16'
+.*:161: Error: unrecognized extended version of MIPS16 opcode `ddivu\.e \$0,\$16,\$16'
+.*:162: Error: unrecognized extended version of MIPS16 opcode `dremu\.e \$0,\$16,\$16'
+.*:164: Error: unrecognized extended version of MIPS16 opcode `extend\.e 0'
+.*:166: Warning: extended operand requested but not required
+.*:167: Warning: extended operand requested but not required
+.*:168: Warning: extended operand requested but not required
+.*:169: Warning: extended operand requested but not required
+.*:170: Warning: extended operand requested but not required
+.*:171: Warning: extended operand requested but not required
+.*:172: Warning: extended operand requested but not required
+.*:174: Warning: extended operand requested but not required
+.*:176: Warning: extended operand requested but not required
+.*:177: Warning: extended operand requested but not required
+.*:179: Warning: extended operand requested but not required
+.*:180: Warning: extended operand requested but not required
+.*:182: Warning: extended operand requested but not required
+.*:183: Warning: extended operand requested but not required
+.*:10: Warning: extended operand requested but not required
+.*:12: Warning: extended operand requested but not required
+.*:19: Warning: extended operand requested but not required
+.*:21: Warning: extended operand requested but not required
+.*:44: Warning: extended operand requested but not required
+.*:45: Warning: extended operand requested but not required
+.*:181: Warning: extended operand requested but not required
diff --git a/gas/testsuite/gas/mips/mips16-insn-e.s b/gas/testsuite/gas/mips/mips16-insn-e.s
new file mode 100644
index 0000000..b175cd1
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-insn-e.s
@@ -0,0 +1,187 @@
+ .set mips16
+ .set noreorder
+foo:
+ addiu.e $16, $29, 0 # ADDIUSP
+ addu.e $16, $29, 0
+
+ .align 2
+ addiu.e $16, $pc, 0 # ADDIUPC
+ addu.e $16, $pc, 0
+ la.e $16, . - 1
+
+ b.e . + 2 # B
+
+ jal.e 0 # JAL(X)
+ nop
+ jalx.e 0
+ nop
+
+ beqz.e $16, . + 2 # BEQZ
+
+ bnez.e $16, . + 2 # BNEZ
+
+ sll.e $16, $16, 8 # SHIFT # SLL
+ dsll.e $16, $16, 8 # DSLL
+ srl.e $16, $16, 8 # SRL
+ sra.e $16, $16, 8 # SRA
+
+ ld.e $16, 0($16) # LD
+
+ addiu.e $16, $16, 0 # RRI-A # ADDIU
+ addu.e $16, $16, 0
+ daddiu.e $16, $16, 0 # DADDIU
+ daddu.e $16, $16, 0
+
+ addiu.e $16, 0 # ADDIU8
+ addu.e $16, 0
+
+ slti.e $16, 0 # SLTI
+ slt.e $16, 0
+
+ sltiu.e $16, 0 # SLTIU
+ sltu.e $16, 0
+
+ bteqz.e . + 2 # I8 # BTEQZ
+ btnez.e . + 2 # BTNEZ
+ sw.e $31, 0($29) # SWRASP
+ addiu.e $29, 0 # ADJSP
+ addiu.e $29, $29, 0
+ addu.e $29, 0
+ addu.e $29, $29, 0
+ restore.e 128 # SVRS # RESTORE
+ save.e 128 # SAVE
+ nop.e # MOV32R
+ move.e $0, $16
+ move.e $16, $0 # MOVR32
+
+ li.e $16, 0 # LI
+
+ cmpi.e $16, 0 # CMPI
+ cmp.e $16, 0
+
+ sd.e $16, 0($16) # SD
+
+ lb.e $16, 0($16) # LB
+
+ lh.e $16, 0($16) # LH
+
+ lw.e $16, 0($29) # LWSP
+
+ lw.e $16, 0($16) # LW
+
+ lbu.e $16, 0($16) # LBU
+
+ lhu.e $16, 0($16) # LHU
+
+ .align 2
+ lw.e $16, 0($pc) # LWPC
+ lw.e $16, . - 3
+
+ lwu.e $16, 0($16) # LWU
+
+ sb.e $16, 0($16) # SB
+
+ sh.e $16, 0($16) # SH
+
+ sw.e $16, 0($29) # SWSP
+
+ sw.e $16, 0($16) # SW
+
+ daddu.e $16, $16, $16 # RRR # DADDU
+ addu.e $16, $16, $16 # ADDU
+ dsubu.e $16, $16, $16 # DSUBU
+ subu.e $16, $16, $16 # SUBU
+
+ jr.e $16 # RR # J(AL)R(C) # JR rx
+ nop
+ j.e $16
+ nop
+ jr.e $31 # JR ra
+ nop
+ j.e $31
+ nop
+ jalr.e $16 # JALR
+ nop
+ jalr.e $31, $16
+ nop
+ jal.e $16
+ nop
+ jal.e $31, $16
+ nop
+ jrc.e $16 # JRC rx
+ jrc.e $31 # JRC ra
+ jalrc.e $16 # JALRC
+ jalrc.e $31, $16
+ sdbbp.e 0 # SDBBP
+ slt.e $16, $16 # SLT
+ sltu.e $16, $16 # SLTU
+ sllv.e $16, $16 # SLLV
+ sll.e $16, $16
+ break.e 0 # BREAK
+ srlv.e $16, $16 # SRLV
+ srl.e $16, $16
+ srav.e $16, $16 # SRAV
+ sra.e $16, $16
+ dsrl.e $16, 8 # DSRL
+ entry.e # ENTRY/EXIT
+ entry.e $31
+ exit.e $f0
+ exit.e
+ cmp.e $16, $16 # CMP
+ neg.e $16, $16 # NEG
+ and.e $16, $16 # AND
+ or.e $16, $16 # OR
+ xor.e $16, $16 # XOR
+ not.e $16, $16 # NOT
+ mfhi.e $16 # MFHI
+ zeb.e $16 # CNVT # ZEB
+ zeh.e $16 # ZEH
+ zew.e $16 # ZEW
+ seb.e $16 # SEB
+ seh.e $16 # SEH
+ sew.e $16 # SEW
+ mflo.e $16 # MFLO
+ dsra.e $16, 8 # DSRA
+ dsllv.e $16, $16 # DSLLV
+ dsll.e $16, $16
+ dsrlv.e $16, $16 # DSRLV
+ dsrl.e $16, $16
+ dsrav.e $16, $16 # DSRAV
+ dsra.e $16, $16
+ mult.e $16, $16 # MULT
+ multu.e $16, $16 # MULTU
+ div.e $0, $16, $16 # DIV
+ rem.e $0, $16, $16
+ divu.e $0, $16, $16 # DIVU
+ remu.e $0, $16, $16
+ dmult.e $16, $16 # DMULT
+ dmultu.e $16, $16 # DMULTU
+ ddiv.e $0, $16, $16 # DDIV
+ drem.e $0, $16, $16
+ ddivu.e $0, $16, $16 # DDIVU
+ dremu.e $0, $16, $16
+
+ extend.e 0 # EXTEND
+
+ ld.e $16, 0($29) # I64 # LDSP
+ sd.e $16, 0($29) # SDSP
+ sd.e $31, 0($29) # SDRASP
+ daddiu.e $29, 0 # DADJSP
+ daddiu.e $29, $29, 0
+ daddu.e $29, 0
+ daddu.e $29, $29, 0
+ .align 3
+ ld.e $16, 0($pc) # LDPC
+ ld.e $16, . - 3
+ daddiu.e $16, 0 # DADDIU5
+ daddu.e $16, 0
+ .align 2
+ daddiu.e $16, $pc, 0 # DADDIUPC
+ daddu.e $16, $pc, 0
+ dla.e $16, . - 1
+ daddiu.e $16, $sp, 0 # DADDIUSP
+ daddu.e $16, $sp, 0
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+ .align 4, 0
+ .space 16
diff --git a/gas/testsuite/gas/mips/mips16-insn-t.d b/gas/testsuite/gas/mips/mips16-insn-t.d
new file mode 100644
index 0000000..a0b7e64
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-insn-t.d
@@ -0,0 +1,3 @@
+#as: -32
+#name: MIPS16 explicit unextended instructions
+#error-output: mips16-insn-t.l
diff --git a/gas/testsuite/gas/mips/mips16-insn-t.l b/gas/testsuite/gas/mips/mips16-insn-t.l
new file mode 100644
index 0000000..c15c066
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-insn-t.l
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*:14: Error: invalid operands `jal\.t 0'
+.*:16: Error: unrecognized unextended version of MIPS16 opcode `jalx\.t 0'
diff --git a/gas/testsuite/gas/mips/mips16-insn-t.s b/gas/testsuite/gas/mips/mips16-insn-t.s
new file mode 100644
index 0000000..6e2d86d
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-insn-t.s
@@ -0,0 +1,187 @@
+ .set mips16
+ .set noreorder
+foo:
+ addiu.t $16, $29, 0 # ADDIUSP
+ addu.t $16, $29, 0
+
+ .align 2
+ addiu.t $16, $pc, 0 # ADDIUPC
+ addu.t $16, $pc, 0
+ la.t $16, . - 1
+
+ b.t . + 2 # B
+
+ jal.t 0 # JAL(X)
+ nop
+ jalx.t 0
+ nop
+
+ beqz.t $16, . + 2 # BEQZ
+
+ bnez.t $16, . + 2 # BNEZ
+
+ sll.t $16, $16, 8 # SHIFT # SLL
+ dsll.t $16, $16, 8 # DSLL
+ srl.t $16, $16, 8 # SRL
+ sra.t $16, $16, 8 # SRA
+
+ ld.t $16, 0($16) # LD
+
+ addiu.t $16, $16, 0 # RRI-A # ADDIU
+ addu.t $16, $16, 0
+ daddiu.t $16, $16, 0 # DADDIU
+ daddu.t $16, $16, 0
+
+ addiu.t $16, 0 # ADDIU8
+ addu.t $16, 0
+
+ slti.t $16, 0 # SLTI
+ slt.t $16, 0
+
+ sltiu.t $16, 0 # SLTIU
+ sltu.t $16, 0
+
+ bteqz.t . + 2 # I8 # BTEQZ
+ btnez.t . + 2 # BTNEZ
+ sw.t $31, 0($29) # SWRASP
+ addiu.t $29, 0 # ADJSP
+ addiu.t $29, $29, 0
+ addu.t $29, 0
+ addu.t $29, $29, 0
+ restore.t 128 # SVRS # RESTORE
+ save.t 128 # SAVE
+ nop.t # MOV32R
+ move.t $0, $16
+ move.t $16, $0 # MOVR32
+
+ li.t $16, 0 # LI
+
+ cmpi.t $16, 0 # CMPI
+ cmp.t $16, 0
+
+ sd.t $16, 0($16) # SD
+
+ lb.t $16, 0($16) # LB
+
+ lh.t $16, 0($16) # LH
+
+ lw.t $16, 0($29) # LWSP
+
+ lw.t $16, 0($16) # LW
+
+ lbu.t $16, 0($16) # LBU
+
+ lhu.t $16, 0($16) # LHU
+
+ .align 2
+ lw.t $16, 0($pc) # LWPC
+ lw.t $16, . - 3
+
+ lwu.t $16, 0($16) # LWU
+
+ sb.t $16, 0($16) # SB
+
+ sh.t $16, 0($16) # SH
+
+ sw.t $16, 0($29) # SWSP
+
+ sw.t $16, 0($16) # SW
+
+ daddu.t $16, $16, $16 # RRR # DADDU
+ addu.t $16, $16, $16 # ADDU
+ dsubu.t $16, $16, $16 # DSUBU
+ subu.t $16, $16, $16 # SUBU
+
+ jr.t $16 # RR # J(AL)R(C) # JR rx
+ nop
+ j.t $16
+ nop
+ jr.t $31 # JR ra
+ nop
+ j.t $31
+ nop
+ jalr.t $16 # JALR
+ nop
+ jalr.t $31, $16
+ nop
+ jal.t $16
+ nop
+ jal.t $31, $16
+ nop
+ jrc.t $16 # JRC rx
+ jrc.t $31 # JRC ra
+ jalrc.t $16 # JALRC
+ jalrc.t $31, $16
+ sdbbp.t 0 # SDBBP
+ slt.t $16, $16 # SLT
+ sltu.t $16, $16 # SLTU
+ sllv.t $16, $16 # SLLV
+ sll.t $16, $16
+ break.t 0 # BREAK
+ srlv.t $16, $16 # SRLV
+ srl.t $16, $16
+ srav.t $16, $16 # SRAV
+ sra.t $16, $16
+ dsrl.t $16, 8 # DSRL
+ entry.t # ENTRY/EXIT
+ entry.t $31
+ exit.t $f0
+ exit.t
+ cmp.t $16, $16 # CMP
+ neg.t $16, $16 # NEG
+ and.t $16, $16 # AND
+ or.t $16, $16 # OR
+ xor.t $16, $16 # XOR
+ not.t $16, $16 # NOT
+ mfhi.t $16 # MFHI
+ zeb.t $16 # CNVT # ZEB
+ zeh.t $16 # ZEH
+ zew.t $16 # ZEW
+ seb.t $16 # SEB
+ seh.t $16 # SEH
+ sew.t $16 # SEW
+ mflo.t $16 # MFLO
+ dsra.t $16, 8 # DSRA
+ dsllv.t $16, $16 # DSLLV
+ dsll.t $16, $16
+ dsrlv.t $16, $16 # DSRLV
+ dsrl.t $16, $16
+ dsrav.t $16, $16 # DSRAV
+ dsra.t $16, $16
+ mult.t $16, $16 # MULT
+ multu.t $16, $16 # MULTU
+ div.t $0, $16, $16 # DIV
+ rem.t $0, $16, $16
+ divu.t $0, $16, $16 # DIVU
+ remu.t $0, $16, $16
+ dmult.t $16, $16 # DMULT
+ dmultu.t $16, $16 # DMULTU
+ ddiv.t $0, $16, $16 # DDIV
+ drem.t $0, $16, $16
+ ddivu.t $0, $16, $16 # DDIVU
+ dremu.t $0, $16, $16
+
+ extend.t 0 # EXTEND
+
+ ld.t $16, 0($29) # I64 # LDSP
+ sd.t $16, 0($29) # SDSP
+ sd.t $31, 0($29) # SDRASP
+ daddiu.t $29, 0 # DADJSP
+ daddiu.t $29, $29, 0
+ daddu.t $29, 0
+ daddu.t $29, $29, 0
+ .align 3
+ ld.t $16, 0($pc) # LDPC
+ ld.t $16, . - 3
+ daddiu.t $16, 0 # DADDIU5
+ daddu.t $16, 0
+ .align 2
+ daddiu.t $16, $pc, 0 # DADDIUPC
+ daddu.t $16, $pc, 0
+ dla.t $16, . - 1
+ daddiu.t $16, $sp, 0 # DADDIUSP
+ daddu.t $16, $sp, 0
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+ .align 4, 0
+ .space 16
diff --git a/gas/testsuite/gas/mips/mips16-macro-e.l b/gas/testsuite/gas/mips/mips16-macro-e.l
index 225d9a9..663d87b 100644
--- a/gas/testsuite/gas/mips/mips16-macro-e.l
+++ b/gas/testsuite/gas/mips/mips16-macro-e.l
@@ -1,26 +1,26 @@
.*: Assembler messages:
-.*:4: Error: invalid operands `div\.e \$2,\$3,\$4'
-.*:5: Error: invalid operands `divu\.e \$3,\$4,\$5'
-.*:6: Error: invalid operands `ddiv\.e \$4,\$5,\$6'
-.*:7: Error: invalid operands `ddivu\.e \$5,\$6,\$7'
-.*:8: Error: invalid operands `rem\.e \$6,\$7,\$16'
-.*:9: Error: invalid operands `remu\.e \$6,\$7,\$17'
-.*:10: Error: invalid operands `drem\.e \$2,\$3,\$4'
-.*:11: Error: invalid operands `dremu\.e \$3,\$4,\$5'
+.*:4: Error: unrecognized extended version of MIPS16 opcode `div\.e \$2,\$3,\$4'
+.*:5: Error: unrecognized extended version of MIPS16 opcode `divu\.e \$3,\$4,\$5'
+.*:6: Error: unrecognized extended version of MIPS16 opcode `ddiv\.e \$4,\$5,\$6'
+.*:7: Error: unrecognized extended version of MIPS16 opcode `ddivu\.e \$5,\$6,\$7'
+.*:8: Error: unrecognized extended version of MIPS16 opcode `rem\.e \$6,\$7,\$16'
+.*:9: Error: unrecognized extended version of MIPS16 opcode `remu\.e \$6,\$7,\$17'
+.*:10: Error: unrecognized extended version of MIPS16 opcode `drem\.e \$2,\$3,\$4'
+.*:11: Error: unrecognized extended version of MIPS16 opcode `dremu\.e \$3,\$4,\$5'
.*:12: Error: unrecognized extended version of MIPS16 opcode `mul\.e \$4,\$5,\$6'
.*:13: Error: unrecognized extended version of MIPS16 opcode `dmul\.e \$5,\$6,\$7'
-.*:14: Error: invalid operands `subu\.e \$2,-32767'
-.*:15: Error: invalid operands `subu\.e \$3,16'
-.*:16: Error: invalid operands `subu\.e \$4,32768'
-.*:17: Error: invalid operands `subu\.e \$3,\$7,-16383'
-.*:18: Error: invalid operands `subu\.e \$4,\$16,4'
-.*:19: Error: invalid operands `subu\.e \$5,\$17,16384'
-.*:20: Error: invalid operands `dsubu\.e \$4,-32767'
-.*:21: Error: invalid operands `dsubu\.e \$6,6'
-.*:22: Error: invalid operands `dsubu\.e \$7,32768'
-.*:23: Error: invalid operands `dsubu\.e \$2,\$4,-16383'
-.*:24: Error: invalid operands `dsubu\.e \$3,\$7,8'
-.*:25: Error: invalid operands `dsubu\.e \$4,\$5,16384'
+.*:14: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$2,-32767'
+.*:15: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$3,16'
+.*:16: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$4,32768'
+.*:17: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$3,\$7,-16383'
+.*:18: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$4,\$16,4'
+.*:19: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$5,\$17,16384'
+.*:20: Error: unrecognized extended version of MIPS16 opcode `dsubu\.e \$4,-32767'
+.*:21: Error: unrecognized extended version of MIPS16 opcode `dsubu\.e \$6,6'
+.*:22: Error: unrecognized extended version of MIPS16 opcode `dsubu\.e \$7,32768'
+.*:23: Error: unrecognized extended version of MIPS16 opcode `dsubu\.e \$2,\$4,-16383'
+.*:24: Error: unrecognized extended version of MIPS16 opcode `dsubu\.e \$3,\$7,8'
+.*:25: Error: unrecognized extended version of MIPS16 opcode `dsubu\.e \$4,\$5,16384'
.*:26: Error: unrecognized extended version of MIPS16 opcode `beq\.e \$2,\$3,1b'
.*:27: Error: unrecognized extended version of MIPS16 opcode `bne\.e \$4,\$5,1b'
.*:28: Error: unrecognized extended version of MIPS16 opcode `blt\.e \$6,\$7,1b'
diff --git a/gas/testsuite/gas/mips/mips16e-32@mips16-insn-e.d b/gas/testsuite/gas/mips/mips16e-32@mips16-insn-e.d
new file mode 100644
index 0000000..1f5edee
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16e-32@mips16-insn-e.d
@@ -0,0 +1,4 @@
+#as: -32
+#name: MIPS16 explicit extended instructions
+#error-output: mips16e-32@mips16-insn-e.l
+#source: mips16-insn-e.s
diff --git a/gas/testsuite/gas/mips/mips16e-32@mips16-insn-e.l b/gas/testsuite/gas/mips/mips16e-32@mips16-insn-e.l
new file mode 100644
index 0000000..2c53785
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16e-32@mips16-insn-e.l
@@ -0,0 +1,131 @@
+.*: Assembler messages:
+.*:4: Warning: extended operand requested but not required
+.*:5: Warning: extended operand requested but not required
+.*:8: Warning: extended operand requested but not required
+.*:9: Warning: extended operand requested but not required
+.*:23: Warning: extended operand requested but not required
+.*:24: Error: opcode not supported on this processor: mips32 \(mips32\) `dsll\.e \$16,\$16,8'
+.*:25: Warning: extended operand requested but not required
+.*:26: Warning: extended operand requested but not required
+.*:28: Error: opcode not supported on this processor: mips32 \(mips32\) `ld\.e \$16,0\(\$16\)'
+.*:30: Warning: extended operand requested but not required
+.*:31: Warning: extended operand requested but not required
+.*:32: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.e \$16,\$16,0'
+.*:33: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.e \$16,\$16,0'
+.*:35: Warning: extended operand requested but not required
+.*:36: Warning: extended operand requested but not required
+.*:38: Warning: extended operand requested but not required
+.*:39: Warning: extended operand requested but not required
+.*:41: Warning: extended operand requested but not required
+.*:42: Warning: extended operand requested but not required
+.*:46: Warning: extended operand requested but not required
+.*:47: Warning: extended operand requested but not required
+.*:48: Warning: extended operand requested but not required
+.*:49: Warning: extended operand requested but not required
+.*:50: Warning: extended operand requested but not required
+.*:53: Error: unrecognized extended version of MIPS16 opcode `nop\.e '
+.*:54: Error: unrecognized extended version of MIPS16 opcode `move\.e \$0,\$16'
+.*:55: Error: unrecognized extended version of MIPS16 opcode `move\.e \$16,\$0'
+.*:57: Warning: extended operand requested but not required
+.*:59: Warning: extended operand requested but not required
+.*:60: Warning: extended operand requested but not required
+.*:62: Error: opcode not supported on this processor: mips32 \(mips32\) `sd\.e \$16,0\(\$16\)'
+.*:64: Warning: extended operand requested but not required
+.*:66: Warning: extended operand requested but not required
+.*:68: Warning: extended operand requested but not required
+.*:70: Warning: extended operand requested but not required
+.*:72: Warning: extended operand requested but not required
+.*:74: Warning: extended operand requested but not required
+.*:77: Warning: extended operand requested but not required
+.*:80: Error: opcode not supported on this processor: mips32 \(mips32\) `lwu\.e \$16,0\(\$16\)'
+.*:82: Warning: extended operand requested but not required
+.*:84: Warning: extended operand requested but not required
+.*:86: Warning: extended operand requested but not required
+.*:88: Warning: extended operand requested but not required
+.*:90: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.e \$16,\$16,\$16'
+.*:91: Error: invalid operands `addu\.e \$16,\$16,\$16'
+.*:92: Error: opcode not supported on this processor: mips32 \(mips32\) `dsubu\.e \$16,\$16,\$16'
+.*:93: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$16,\$16,\$16'
+.*:95: Error: unrecognized extended version of MIPS16 opcode `jr\.e \$16'
+.*:97: Error: unrecognized extended version of MIPS16 opcode `j\.e \$16'
+.*:99: Error: unrecognized extended version of MIPS16 opcode `jr\.e \$31'
+.*:101: Error: unrecognized extended version of MIPS16 opcode `j\.e \$31'
+.*:103: Error: unrecognized extended version of MIPS16 opcode `jalr\.e \$16'
+.*:105: Error: unrecognized extended version of MIPS16 opcode `jalr\.e \$31,\$16'
+.*:107: Error: operand 1 must be an immediate expression `jal\.e \$16'
+.*:109: Error: operand 1 must be an immediate expression `jal\.e \$31,\$16'
+.*:111: Error: unrecognized extended version of MIPS16 opcode `jrc\.e \$16'
+.*:112: Error: unrecognized extended version of MIPS16 opcode `jrc\.e \$31'
+.*:113: Error: unrecognized extended version of MIPS16 opcode `jalrc\.e \$16'
+.*:114: Error: unrecognized extended version of MIPS16 opcode `jalrc\.e \$31,\$16'
+.*:115: Error: unrecognized extended version of MIPS16 opcode `sdbbp\.e 0'
+.*:116: Error: invalid operands `slt\.e \$16,\$16'
+.*:117: Error: invalid operands `sltu\.e \$16,\$16'
+.*:118: Error: unrecognized extended version of MIPS16 opcode `sllv\.e \$16,\$16'
+.*:119: Error: invalid operands `sll\.e \$16,\$16'
+.*:120: Error: unrecognized extended version of MIPS16 opcode `break\.e 0'
+.*:121: Error: unrecognized extended version of MIPS16 opcode `srlv\.e \$16,\$16'
+.*:122: Error: invalid operands `srl\.e \$16,\$16'
+.*:123: Error: unrecognized extended version of MIPS16 opcode `srav\.e \$16,\$16'
+.*:124: Error: invalid operands `sra\.e \$16,\$16'
+.*:125: Error: opcode not supported on this processor: mips32 \(mips32\) `dsrl\.e \$16,8'
+.*:126: Error: unrecognized extended version of MIPS16 opcode `entry\.e '
+.*:127: Error: unrecognized extended version of MIPS16 opcode `entry\.e \$31'
+.*:128: Error: unrecognized extended version of MIPS16 opcode `exit\.e \$f0'
+.*:129: Error: unrecognized extended version of MIPS16 opcode `exit\.e'
+.*:130: Error: invalid operands `cmp\.e \$16,\$16'
+.*:131: Error: unrecognized extended version of MIPS16 opcode `neg\.e \$16,\$16'
+.*:132: Error: unrecognized extended version of MIPS16 opcode `and\.e \$16,\$16'
+.*:133: Error: unrecognized extended version of MIPS16 opcode `or\.e \$16,\$16'
+.*:134: Error: unrecognized extended version of MIPS16 opcode `xor\.e \$16,\$16'
+.*:135: Error: unrecognized extended version of MIPS16 opcode `not\.e \$16,\$16'
+.*:136: Error: unrecognized extended version of MIPS16 opcode `mfhi\.e \$16'
+.*:137: Error: unrecognized extended version of MIPS16 opcode `zeb\.e \$16'
+.*:138: Error: unrecognized extended version of MIPS16 opcode `zeh\.e \$16'
+.*:139: Error: opcode not supported on this processor: mips32 \(mips32\) `zew\.e \$16'
+.*:140: Error: unrecognized extended version of MIPS16 opcode `seb\.e \$16'
+.*:141: Error: unrecognized extended version of MIPS16 opcode `seh\.e \$16'
+.*:142: Error: opcode not supported on this processor: mips32 \(mips32\) `sew\.e \$16'
+.*:143: Error: unrecognized extended version of MIPS16 opcode `mflo\.e \$16'
+.*:144: Error: opcode not supported on this processor: mips32 \(mips32\) `dsra\.e \$16,8'
+.*:145: Error: opcode not supported on this processor: mips32 \(mips32\) `dsllv\.e \$16,\$16'
+.*:146: Error: opcode not supported on this processor: mips32 \(mips32\) `dsll\.e \$16,\$16'
+.*:147: Error: opcode not supported on this processor: mips32 \(mips32\) `dsrlv\.e \$16,\$16'
+.*:148: Error: opcode not supported on this processor: mips32 \(mips32\) `dsrl\.e \$16,\$16'
+.*:149: Error: opcode not supported on this processor: mips32 \(mips32\) `dsrav\.e \$16,\$16'
+.*:150: Error: opcode not supported on this processor: mips32 \(mips32\) `dsra\.e \$16,\$16'
+.*:151: Error: unrecognized extended version of MIPS16 opcode `mult\.e \$16,\$16'
+.*:152: Error: unrecognized extended version of MIPS16 opcode `multu\.e \$16,\$16'
+.*:153: Error: unrecognized extended version of MIPS16 opcode `div\.e \$0,\$16,\$16'
+.*:154: Error: unrecognized extended version of MIPS16 opcode `rem\.e \$0,\$16,\$16'
+.*:155: Error: unrecognized extended version of MIPS16 opcode `divu\.e \$0,\$16,\$16'
+.*:156: Error: unrecognized extended version of MIPS16 opcode `remu\.e \$0,\$16,\$16'
+.*:157: Error: opcode not supported on this processor: mips32 \(mips32\) `dmult\.e \$16,\$16'
+.*:158: Error: opcode not supported on this processor: mips32 \(mips32\) `dmultu\.e \$16,\$16'
+.*:159: Error: opcode not supported on this processor: mips32 \(mips32\) `ddiv\.e \$0,\$16,\$16'
+.*:160: Error: opcode not supported on this processor: mips32 \(mips32\) `drem\.e \$0,\$16,\$16'
+.*:161: Error: opcode not supported on this processor: mips32 \(mips32\) `ddivu\.e \$0,\$16,\$16'
+.*:162: Error: opcode not supported on this processor: mips32 \(mips32\) `dremu\.e \$0,\$16,\$16'
+.*:164: Error: unrecognized extended version of MIPS16 opcode `extend\.e 0'
+.*:166: Error: opcode not supported on this processor: mips32 \(mips32\) `ld\.e \$16,0\(\$29\)'
+.*:167: Error: opcode not supported on this processor: mips32 \(mips32\) `sd\.e \$16,0\(\$29\)'
+.*:168: Error: opcode not supported on this processor: mips32 \(mips32\) `sd\.e \$31,0\(\$29\)'
+.*:169: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.e \$29,0'
+.*:170: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.e \$29,\$29,0'
+.*:171: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.e \$29,0'
+.*:172: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.e \$29,\$29,0'
+.*:174: Error: opcode not supported on this processor: mips32 \(mips32\) `ld\.e \$16,0\(\$pc\)'
+.*:175: Error: opcode not supported on this processor: mips32 \(mips32\) `ld\.e \$16,\.-3'
+.*:176: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.e \$16,0'
+.*:177: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.e \$16,0'
+.*:179: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.e \$16,\$pc,0'
+.*:180: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.e \$16,\$pc,0'
+.*:181: Error: opcode not supported on this processor: mips32 \(mips32\) `dla\.e \$16,\.-1'
+.*:182: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.e \$16,\$sp,0'
+.*:183: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.e \$16,\$sp,0'
+.*:10: Warning: extended operand requested but not required
+.*:12: Warning: extended operand requested but not required
+.*:19: Warning: extended operand requested but not required
+.*:21: Warning: extended operand requested but not required
+.*:44: Warning: extended operand requested but not required
+.*:45: Warning: extended operand requested but not required
diff --git a/gas/testsuite/gas/mips/mips16e-32@mips16-insn-t.d b/gas/testsuite/gas/mips/mips16e-32@mips16-insn-t.d
new file mode 100644
index 0000000..3c677cf
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16e-32@mips16-insn-t.d
@@ -0,0 +1,4 @@
+#as: -32
+#name: MIPS16 explicit unextended instructions
+#error-output: mips16e-32@mips16-insn-t.l
+#source: mips16-insn-t.s
diff --git a/gas/testsuite/gas/mips/mips16e-32@mips16-insn-t.l b/gas/testsuite/gas/mips/mips16e-32@mips16-insn-t.l
new file mode 100644
index 0000000..69ce411
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16e-32@mips16-insn-t.l
@@ -0,0 +1,43 @@
+.*: Assembler messages:
+.*:14: Error: invalid operands `jal\.t 0'
+.*:16: Error: unrecognized unextended version of MIPS16 opcode `jalx\.t 0'
+.*:24: Error: opcode not supported on this processor: mips32 \(mips32\) `dsll\.t \$16,\$16,8'
+.*:28: Error: opcode not supported on this processor: mips32 \(mips32\) `ld\.t \$16,0\(\$16\)'
+.*:32: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.t \$16,\$16,0'
+.*:33: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.t \$16,\$16,0'
+.*:62: Error: opcode not supported on this processor: mips32 \(mips32\) `sd\.t \$16,0\(\$16\)'
+.*:80: Error: opcode not supported on this processor: mips32 \(mips32\) `lwu\.t \$16,0\(\$16\)'
+.*:90: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.t \$16,\$16,\$16'
+.*:92: Error: opcode not supported on this processor: mips32 \(mips32\) `dsubu\.t \$16,\$16,\$16'
+.*:125: Error: opcode not supported on this processor: mips32 \(mips32\) `dsrl\.t \$16,8'
+.*:139: Error: opcode not supported on this processor: mips32 \(mips32\) `zew\.t \$16'
+.*:142: Error: opcode not supported on this processor: mips32 \(mips32\) `sew\.t \$16'
+.*:144: Error: opcode not supported on this processor: mips32 \(mips32\) `dsra\.t \$16,8'
+.*:145: Error: opcode not supported on this processor: mips32 \(mips32\) `dsllv\.t \$16,\$16'
+.*:146: Error: opcode not supported on this processor: mips32 \(mips32\) `dsll\.t \$16,\$16'
+.*:147: Error: opcode not supported on this processor: mips32 \(mips32\) `dsrlv\.t \$16,\$16'
+.*:148: Error: opcode not supported on this processor: mips32 \(mips32\) `dsrl\.t \$16,\$16'
+.*:149: Error: opcode not supported on this processor: mips32 \(mips32\) `dsrav\.t \$16,\$16'
+.*:150: Error: opcode not supported on this processor: mips32 \(mips32\) `dsra\.t \$16,\$16'
+.*:157: Error: opcode not supported on this processor: mips32 \(mips32\) `dmult\.t \$16,\$16'
+.*:158: Error: opcode not supported on this processor: mips32 \(mips32\) `dmultu\.t \$16,\$16'
+.*:159: Error: opcode not supported on this processor: mips32 \(mips32\) `ddiv\.t \$0,\$16,\$16'
+.*:160: Error: opcode not supported on this processor: mips32 \(mips32\) `drem\.t \$0,\$16,\$16'
+.*:161: Error: opcode not supported on this processor: mips32 \(mips32\) `ddivu\.t \$0,\$16,\$16'
+.*:162: Error: opcode not supported on this processor: mips32 \(mips32\) `dremu\.t \$0,\$16,\$16'
+.*:166: Error: opcode not supported on this processor: mips32 \(mips32\) `ld\.t \$16,0\(\$29\)'
+.*:167: Error: opcode not supported on this processor: mips32 \(mips32\) `sd\.t \$16,0\(\$29\)'
+.*:168: Error: opcode not supported on this processor: mips32 \(mips32\) `sd\.t \$31,0\(\$29\)'
+.*:169: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.t \$29,0'
+.*:170: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.t \$29,\$29,0'
+.*:171: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.t \$29,0'
+.*:172: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.t \$29,\$29,0'
+.*:174: Error: opcode not supported on this processor: mips32 \(mips32\) `ld\.t \$16,0\(\$pc\)'
+.*:175: Error: opcode not supported on this processor: mips32 \(mips32\) `ld\.t \$16,\.-3'
+.*:176: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.t \$16,0'
+.*:177: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.t \$16,0'
+.*:179: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.t \$16,\$pc,0'
+.*:180: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.t \$16,\$pc,0'
+.*:181: Error: opcode not supported on this processor: mips32 \(mips32\) `dla\.t \$16,\.-1'
+.*:182: Error: opcode not supported on this processor: mips32 \(mips32\) `daddiu\.t \$16,\$sp,0'
+.*:183: Error: opcode not supported on this processor: mips32 \(mips32\) `daddu\.t \$16,\$sp,0'
diff --git a/gas/testsuite/gas/mips/mips16e-32@mips16-macro-e.l b/gas/testsuite/gas/mips/mips16e-32@mips16-macro-e.l
index eb763b5..b91a274 100644
--- a/gas/testsuite/gas/mips/mips16e-32@mips16-macro-e.l
+++ b/gas/testsuite/gas/mips/mips16e-32@mips16-macro-e.l
@@ -1,20 +1,20 @@
.*: Assembler messages:
-.*:4: Error: invalid operands `div\.e \$2,\$3,\$4'
-.*:5: Error: invalid operands `divu\.e \$3,\$4,\$5'
+.*:4: Error: unrecognized extended version of MIPS16 opcode `div\.e \$2,\$3,\$4'
+.*:5: Error: unrecognized extended version of MIPS16 opcode `divu\.e \$3,\$4,\$5'
.*:6: Error: opcode not supported on this processor: mips32 \(mips32\) `ddiv\.e \$4,\$5,\$6'
.*:7: Error: opcode not supported on this processor: mips32 \(mips32\) `ddivu\.e \$5,\$6,\$7'
-.*:8: Error: invalid operands `rem\.e \$6,\$7,\$16'
-.*:9: Error: invalid operands `remu\.e \$6,\$7,\$17'
+.*:8: Error: unrecognized extended version of MIPS16 opcode `rem\.e \$6,\$7,\$16'
+.*:9: Error: unrecognized extended version of MIPS16 opcode `remu\.e \$6,\$7,\$17'
.*:10: Error: opcode not supported on this processor: mips32 \(mips32\) `drem\.e \$2,\$3,\$4'
.*:11: Error: opcode not supported on this processor: mips32 \(mips32\) `dremu\.e \$3,\$4,\$5'
.*:12: Error: unrecognized extended version of MIPS16 opcode `mul\.e \$4,\$5,\$6'
.*:13: Error: opcode not supported on this processor: mips32 \(mips32\) `dmul\.e \$5,\$6,\$7'
-.*:14: Error: invalid operands `subu\.e \$2,-32767'
-.*:15: Error: invalid operands `subu\.e \$3,16'
-.*:16: Error: invalid operands `subu\.e \$4,32768'
-.*:17: Error: invalid operands `subu\.e \$3,\$7,-16383'
-.*:18: Error: invalid operands `subu\.e \$4,\$16,4'
-.*:19: Error: invalid operands `subu\.e \$5,\$17,16384'
+.*:14: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$2,-32767'
+.*:15: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$3,16'
+.*:16: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$4,32768'
+.*:17: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$3,\$7,-16383'
+.*:18: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$4,\$16,4'
+.*:19: Error: unrecognized extended version of MIPS16 opcode `subu\.e \$5,\$17,16384'
.*:20: Error: opcode not supported on this processor: mips32 \(mips32\) `dsubu\.e \$4,-32767'
.*:21: Error: opcode not supported on this processor: mips32 \(mips32\) `dsubu\.e \$6,6'
.*:22: Error: opcode not supported on this processor: mips32 \(mips32\) `dsubu\.e \$7,32768'