[PATCH 0/9] MIPS Allegrex VFPU implementation
David Guillen Fandos
david@davidgf.net
Sat Jun 14 08:02:14 GMT 2025
Hello binutils developers!
After MIPS Allegrex support was added in the 2.41 release, I'm proposing to add
support for its VFPU coprocessor. It contains a few hundred instructions that
occupy the CP2/CP3 (and some other unused opcodes) space, come in different
flavours (for different vector/matrix sizes) and have its own register bank
(with 128 32 bit fp registers organized as 8 4x4 matrices).
I tried to organize the patches in a way that they are understandable while
making them as small and un-invasive as possible. Unfortunately some
instructions have funny syntax requirements which are slightly tricky to parse
using the token parsing system.
Thank you very much! Looking forward to your review :)
David Guillen Fandos (9):
Add initial support for MIPS Allegrex VFPU coprocessor
Add MIPS Allegrex VFPU register names and some vector instructions
Add MIPS Allegrex VFPU prefix instructions and support for decorated
registers.
Implement prefix-register compatibility checks for the MIPS Allegrex
VFPU regs.
Implement dest-register compatibility checks for the MIPS Allegrex
VFPU regs.
Add MIPS Allegrex VFPU matrix register and instruction support
Add more MIPS Allegrex VFPU instructions
Add MIPS Allegrex VFPU coprocessor registers and instructions
Add MIPS Allegrex VFPU conditional move and branching instructions
gas/config/tc-mips.c | 784 +++++++++++++++++-
gas/testsuite/gas/mips/allegrex-vfpu-errors.d | 3 +
gas/testsuite/gas/mips/allegrex-vfpu-errors.l | 89 ++
gas/testsuite/gas/mips/allegrex-vfpu-errors.s | 95 +++
gas/testsuite/gas/mips/allegrex-vfpu.d | 306 +++++++
gas/testsuite/gas/mips/allegrex-vfpu.s | 300 +++++++
gas/testsuite/gas/mips/allegrex@cp2b.d | 13 +
gas/testsuite/gas/mips/allegrex@cp2bl.d | 13 +
.../gas/mips/allegrex@isa-override-1.d | 2 +-
gas/testsuite/gas/mips/mips.exp | 2 +
include/opcode/mips.h | 97 ++-
opcodes/mips-dis.c | 215 +++++
opcodes/mips-formats.h | 53 ++
opcodes/mips-opc.c | 315 ++++++-
14 files changed, 2278 insertions(+), 9 deletions(-)
create mode 100644 gas/testsuite/gas/mips/allegrex-vfpu-errors.d
create mode 100644 gas/testsuite/gas/mips/allegrex-vfpu-errors.l
create mode 100644 gas/testsuite/gas/mips/allegrex-vfpu-errors.s
create mode 100644 gas/testsuite/gas/mips/allegrex-vfpu.d
create mode 100644 gas/testsuite/gas/mips/allegrex-vfpu.s
create mode 100644 gas/testsuite/gas/mips/allegrex@cp2b.d
create mode 100644 gas/testsuite/gas/mips/allegrex@cp2bl.d
--
2.49.0
More information about the Binutils
mailing list