Skip to content
  • Scott Egerton's avatar
    MIPS: Add CRC ASE support · 730c3174
    Scott Egerton authored
    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.
    730c3174