binutils-gdb/include/opcode
Maciej W. Rozycki 7fd5392005 MIPS16: Switch to 32-bit opcode table interpretation
Switch to 32-bit MIPS16 opcode table entry interpretation, similar to
how the microMIPS opcode table is handled, for both the `match' and
`mask' fields, removing special casing for JAL and JALX instructions and
their `a' and `i' operand codes throughout, while retaining automatic
processing of extendable opcodes in assembly and disassembly.

In assembly disallow size enforcement suffixes as appropriate: `.t' for
both 32-bit instructions and macros and `.e' for macros only, making
macro handling consistent with the microMIPS instruction set.

In disassembly fully decode EXTEND prefixes prepended to unsupported
instruction encodings (according to the ISA selection) rather than
dumping them as hexadecimal data along with the following instruction,
removing all special casing for the EXTEND prefix and making its
handling rely on its opcode table entry, except where it is considered a
part of an extendable instruction.

	include/
	* opcode/mips.h (mips_opcode_32bit_p): New inline function.

	gas/
	* config/tc-mips.c (micromips_insn_length): Use
	`mips_opcode_32bit_p'.
	(is_size_valid): Adjust description.
	(is_size_valid_16): New function.
	(validate_mips_insn): Use `mips_opcode_32bit_p' in MIPS16
	operand decoding.
	(validate_mips16_insn): Remove `a' and `i' operand code special
	casing, use `mips_opcode_32bit_p' to determine instruction
	width.
	(append_insn): Adjust forced MIPS16 instruction size
	determination.
	(match_mips16_insn): Likewise.  Don't shift the instruction's
	opcode with the `a' and `i' operand codes.  Use
	`mips_opcode_32bit_p' in operand decoding.
	(match_mips16_insns): Check for forced instruction size's
	validity.
	(mips16_ip): Don't force instruction size in the `noautoextend'
	mode.
	* testsuite/gas/mips/mips16-jal-e.d: New test.
	* testsuite/gas/mips/mips16-jal-t.d: New test.
	* testsuite/gas/mips/mips16-macro-e.d: New test.
	* testsuite/gas/mips/mips16-macro-t.d: New test.
	* testsuite/gas/mips/mips16-jal-t.l: New stderr output.
	* testsuite/gas/mips/mips16-macro-e.l: New stderr output.
	* testsuite/gas/mips/mips16-macro-t.l: New stderr output.
	* testsuite/gas/mips/mips16-jal-e.s: New test source.
	* testsuite/gas/mips/mips16-jal-t.s: New test source.
	* testsuite/gas/mips/mips16-macro-e.s: New test source.
	* testsuite/gas/mips/mips16-macro-t.s: New test source.
	* testsuite/gas/mips/mips.exp: Run the new tests.

	opcodes/
	* mips-dis.c (print_mips16_insn_arg): Always handle `extend' and
	`insn' together, with `extend' as the high-order 16 bits.
	(match_kind): New enum.
	(print_insn_mips16): Rework for 32-bit instruction matching.
	Do not dump EXTEND prefixes here.
	* mips16-opc.c (mips16_opcodes): Move "extend" entry to the end.
	Recode `match' and `mask' fields as 32-bit in absolute "jal" and
	"jalx" entries.

	binutils/
	* testsuite/binutils-all/mips/mips16-extend-noinsn.d: Adjust
	test for separate EXTEND prefix disassembly.
2016-12-20 11:56:32 +00:00
..
aarch64.h [Binutils][AARCH64]Remove Cn register for coprocessor CRn, CRm field 2016-12-13 17:20:08 +00:00
alpha.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
arc-func.h Fixes to legacy ARC relocations. 2016-08-26 12:09:17 +02:00
arc.h [ARC] Add checking for LP_COUNT reg usage, improve error reporting. 2016-11-29 11:29:18 +01:00
arm.h [ARM] Add ARMv8.3 command line option and feature flag 2016-12-05 14:07:25 +00:00
avr.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
bfin.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
cgen.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
ChangeLog-0415 binutils ChangeLog rotation 2016-01-01 22:59:17 +10:30
ChangeLog-9103 Add copyright notices 2012-12-10 12:48:03 +00:00
convex.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
cr16.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
cris.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
crx.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
d10v.h add more extern C 2016-06-01 21:26:32 -04:00
d30v.h add more extern C 2016-06-01 21:26:32 -04:00
dlx.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
ft32.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
h8300.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
hppa.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
i370.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
i386.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
i860.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
i960.h make more variables const 2016-03-22 19:16:06 -04:00
ia64.h add more extern C 2016-06-01 21:26:32 -04:00
m68hc11.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
m68k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
m88k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
metag.h metag: add extern C to header 2016-05-26 06:12:15 -04:00
mips.h MIPS16: Switch to 32-bit opcode table interpretation 2016-12-20 11:56:32 +00:00
mmix.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
mn10200.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
mn10300.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
moxie.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
msp430-decode.h Change the size field of MSP430_Opcode_Decoded to a plain integer. 2016-06-14 11:41:34 -07:00
msp430.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
nds32.h Fix compile time warnings building the binutils with a gcc6 compiler. 2016-02-09 16:34:24 +00:00
nios2.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
nios2r1.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
nios2r2.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
np1.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
ns32k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
pdp11.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
pj.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
pn.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
ppc.h PR20744, Incorrect PowerPC VLE relocs 2016-11-22 20:19:29 +10:30
pyr.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
riscv-opc.h Add support for RISC-V architecture. 2016-11-01 16:45:57 +00:00
riscv.h Add support for RISC-V architecture. 2016-11-01 16:45:57 +00:00
rl78.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
rx.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
s390.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
score-datadep.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
score-inst.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
sparc.h gas,opcodes: fix hardware capabilities bumping in the sparc assembler. 2016-11-22 04:40:37 -08:00
spu-insns.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
spu.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
tahoe.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tic4x.h make more variables const 2016-03-22 19:16:06 -04:00
tic6x-control-registers.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tic6x-insn-formats.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tic6x-opcode-table.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tic6x.h add more extern C 2016-06-01 21:26:32 -04:00
tic30.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
tic54x.h tic54x: rename typedef of struct symbol_ 2016-05-23 01:17:12 -04:00
tic80.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tilegx.h tilegx: move TILEGX_NUM_PIPELINE_ENCODINGS to tilegx_pipeline enum 2016-06-22 05:14:08 -04:00
tilepro.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
v850.h add more extern C 2016-06-01 21:26:32 -04:00
vax.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
visium.h Add const qualifiers at various places. 2016-03-07 15:16:28 +00:00
xgate.h Copyright update for binutils 2016-01-01 23:00:01 +10:30