diff options
author | Scott Egerton <scott.egerton@imgtec.com> | 2018-06-13 15:39:05 +0100 |
---|---|---|
committer | Maciej W. Rozycki <macro@mips.com> | 2018-06-13 15:39:05 +0100 |
commit | 730c31740a69eaee73e0fc5430d80daa683c26e7 (patch) | |
tree | ecfb431685aa1375d38532ccb2218195f8142050 /gas/config/tc-mips.c | |
parent | a08ac84b963facb4c4a85c4d5df057d44e2a276d (diff) | |
download | gdb-730c31740a69eaee73e0fc5430d80daa683c26e7.zip gdb-730c31740a69eaee73e0fc5430d80daa683c26e7.tar.gz gdb-730c31740a69eaee73e0fc5430d80daa683c26e7.tar.bz2 |
MIPS: Add CRC ASE support
Add support for the CRC Application Specific Extension for Release 6 of
the MIPS Architecture.
[1] "MIPS Architecture for Programmers Volume II-A: The MIPS32
Instruction Set Manual", Imagination Technologies Ltd., Document
Number: MD00086, Revision 6.06, December 15, 2016, Section 3.2
"Alphabetical List of Instructions", pp. 143-148
[2] "MIPS Architecture for Programmers Volume II-A: The MIPS64
Instruction Set Manual", Imagination Technologies Ltd., Document
Number: MD00087, Revision 6.06, December 15, 2016, Section 3.2
"Alphabetical List of Instructions", pp. 165-170
ChangeLog:
bfd/
2018-06-13 Scott Egerton <scott.egerton@imgtec.com>
Faraz Shahbazker <Faraz.Shahbazker@mips.com>
* elfxx-mips.c (print_mips_ases): Add CRC.
binutils/
2018-06-13 Scott Egerton <scott.egerton@imgtec.com>
Faraz Shahbazker <Faraz.Shahbazker@mips.com>
* readelf.c (print_mips_ases): Add CRC.
gas/
2018-06-13 Scott Egerton <scott.egerton@imgtec.com>
Faraz Shahbazker <Faraz.Shahbazker@mips.com>
Maciej W. Rozycki <macro@mips.com>
* config/tc-mips.c (options): Add OPTION_CRC and OPTION_NO_CRC.
(md_longopts): Likewise.
(md_show_usage): Add help for -mcrc and -mno-crc.
(mips_ases): Define availability for CRC and CRC64.
(mips_convert_ase_flags): Map ASE_CRC to AFL_ASE_CRC.
* doc/as.texinfo: Document -mcrc, -mno-crc.
* doc/c-mips.texi: Document -mcrc, -mno-crc, .set crc and
.set no-crc.
* testsuite/gas/mips/ase-errors-1.l: Add error checks for CRC
ASE.
* testsuite/gas/mips/ase-errors-2.l: Likewise.
* testsuite/gas/mips/ase-errors-1.s: Likewise.
* testsuite/gas/mips/ase-errors-2.s: Likewise.
* testsuite/gas/mips/crc.d: New test.
* testsuite/gas/mips/crc64.d: New test.
* testsuite/gas/mips/crc-err.d: New test.
* testsuite/gas/mips/crc64-err.d: New test.
* testsuite/gas/mips/crc-err.l: New test stderr output.
* testsuite/gas/mips/crc64-err.l: New test stderr output.
* testsuite/gas/mips/crc.s: New test source.
* testsuite/gas/mips/crc64.s: New test source.
* testsuite/gas/mips/crc-err.s: New test source.
* testsuite/gas/mips/crc64-err.s: New test source.
* testsuite/gas/mips/mips.exp: Run the new tests.
include/
2018-06-13 Scott Egerton <scott.egerton@imgtec.com>
Faraz Shahbazker <Faraz.Shahbazker@mips.com>
* elf/mips.h (AFL_ASE_CRC): New macro.
(AFL_ASE_MASK): Update to include AFL_ASE_CRC.
* opcode/mips.h (ASE_CRC): New macro.
* opcode/mips.h (ASE_CRC64): Likewise.
opcodes/
2018-06-13 Scott Egerton <scott.egerton@imgtec.com>
Faraz Shahbazker <Faraz.Shahbazker@mips.com>
* mips-dis.c (mips_arch_choices): Add CRC and CRC64 ASEs.
* mips-opc.c (CRC, CRC64): New macros.
(mips_builtin_opcodes): Define crc32b, crc32h, crc32w,
crc32cb, crc32ch and crc32cw for CRC. Define crc32d and
crc32cd for CRC64.
Diffstat (limited to 'gas/config/tc-mips.c')
-rw-r--r-- | gas/config/tc-mips.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 50c4deb..7cadbb6 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -1460,6 +1460,8 @@ enum options OPTION_NO_MCU, OPTION_MIPS16E2, OPTION_NO_MIPS16E2, + OPTION_CRC, + OPTION_NO_CRC, OPTION_M4650, OPTION_NO_M4650, OPTION_M4010, @@ -1581,6 +1583,8 @@ struct option md_longopts[] = {"mno-xpa", no_argument, NULL, OPTION_NO_XPA}, {"mmips16e2", no_argument, NULL, OPTION_MIPS16E2}, {"mno-mips16e2", no_argument, NULL, OPTION_NO_MIPS16E2}, + {"mcrc", no_argument, NULL, OPTION_CRC}, + {"mno-crc", no_argument, NULL, OPTION_NO_CRC}, /* Old-style architecture options. Don't add more of these. */ {"m4650", no_argument, NULL, OPTION_M4650}, @@ -1768,6 +1772,11 @@ static const struct mips_ase mips_ases[] = { OPTION_MIPS16E2, OPTION_NO_MIPS16E2, 2, 2, -1, -1, 6 }, + + { "crc", ASE_CRC, ASE_CRC64, + OPTION_CRC, OPTION_NO_CRC, + 6, 6, -1, -1, + -1 }, }; /* The set of ASEs that require -mfp64. */ @@ -18976,6 +18985,8 @@ mips_convert_ase_flags (int ase) ext_ases |= AFL_ASE_XPA; if (ase & ASE_MIPS16E2) ext_ases |= file_ase_mips16 ? AFL_ASE_MIPS16E2 : 0; + if (ase & ASE_CRC) + ext_ases |= AFL_ASE_CRC; return ext_ases; } @@ -19990,6 +20001,9 @@ MIPS options:\n\ -mvirt generate Virtualization instructions\n\ -mno-virt do not generate Virtualization instructions\n")); fprintf (stream, _("\ +-mcrc generate CRC instructions\n\ +-mno-crc do not generate CRC instructions\n")); + fprintf (stream, _("\ -minsn32 only generate 32-bit microMIPS instructions\n\ -mno-insn32 generate all microMIPS instructions\n")); fprintf (stream, _("\ |