gcc/
- config.gcc: Add mipsisa64r6 and mipsisa32r6 cpu support.
- config/mips/constraints.md (ZD): Add r6 restrictions.
- config/mips/gnu-user.h (DRIVER_SELF_SPECS): Add MIPS_ISA_LEVEL_SPEC.
- config/mips/loongson.md (div
- config/mips/mips-cpus.def (mips32r6, mips64r6): Define.
- config/mips/mips-modes.def (CCF): New mode.
- config/mips/mips-protos.h (mips_9bit_offset_address_p): New prototype.
- config/mips/mips-tables.opt: Regenerate.
- config/mips/mips.c (MIPS_JR): Use JALR $,
- config/mips/mips.h (ISA_MIPS32R6, ISA_MIPS64R6): Define. (TARGET_CPU_CPP_BUILTINS): Rework for mips32/mips64. (ISA_HAS_JR): New macro. (ISA_HAS_HILO): New macro. (ISA_HAS_R6MUL): Likewise. (ISA_HAS_R6DMUL): Likewise. (ISA_HAS_R6DIV): Likewise. (ISA_HAS_R6DDIV): Likewise. (ISA_HAS_CCF): Likewise. (ISA_HAS_SEL): Likewise. (ISA_HAS_COND_TRAPI): Likewise. (ISA_HAS_FP_MADDF_MSUBF): Likewise. (ISA_HAS_LWL_LWR): Likewise. (ISA_HAS_IEEE_754_LEGACY): Likewise. (ISA_HAS_IEEE_754_2008): Likewise. (ISA_HAS_PREFETCH_9BIT): Likewise. (MIPSR6_9BIT_OFFSET_P): New macro. (BASE_DRIVER_SELF_SPECS): Use MIPS_ISA_DRIVER_SELF_SPECS. (DRIVER_SELF_SPECS): Use MIPS_ISA_LEVEL_SPEC. (MULTILIB_ISA_DEFAULT): Handle mips32r6 and mips64r6. (MIPS_ISA_LEVEL_SPEC): Likewise. (MIPS_ISA_SYNCI_SPEC): Likewise. (ISA_HAS_64BIT_REGS): Likewise. (ISA_HAS_BRANCHLIKELY): Likewise. (ISA_HAS_MUL3): Likewise. (ISA_HAS_DMULT): Likewise. (ISA_HAS_DDIV): Likewise. (ISA_HAS_DIV): Likewise. (ISA_HAS_MULT): Likewise. (ISA_HAS_FP_CONDMOVE): Likewise. (ISA_HAS_8CC): Likewise. (ISA_HAS_FP4): Likewise. (ISA_HAS_PAIRED_SINGLE): Likewise. (ISA_HAS_MADD_MSUB): Likewise. (ISA_HAS_FP_RECIP_RSQRT): Likewise.
- config/mips/mips.md (processor): Add w32 and w64. (FPCC): New mode iterator. (reg): Add CCF mode. (fpcmp): New mode attribute. (fcond): Add ordered, ltgt and ne codes. (fcond): Update code attribute. (sel): New code attribute. (selinv): Likewise. (ctrap_
_
_
_
- config/mips/netbsd.h (TARGET_CPU_CPP_BUILTINS): Update similarly to mips.h. (ASM_SPEC): Add mips32r6, mips64r6.
- config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Update for mips32r6/mips64r6.
- doc/invoke.texi: Document -mips32r6,-mips64r6.
- doc/md.texi: Update comment for ZD constraint.
libgcc/
- config.host: Support mipsisa32r6 and mipsisa64r6.
- config/mips/mips16.S: Do not build for R6.
gcc/testsuite/
- gcc.dg/torture/mips-hilo-2.c: Unconditionally pass for R6 onwards.
- gcc.dg/torture/pr19683-1.c: Likewise.
- gcc.target/mips/branch-cost-2.c: Require MOVN.
- gcc.target/mips/movcc-1.c: Likewise.
- gcc.target/mips/movcc-2.c: Likewise.
- gcc.target/mips/movcc-3.c: Likewise.
- gcc.target/mips/call-saved-4.c: Require LDC.
- gcc.target/mips/dmult-1.c: Require R5 or earlier.
- gcc.target/mips/fpcmp-1.c: Likewise.
- gcc.target/mips/fpcmp-2.c: Likewise.
- gcc.target/mips/neg-abs-2.c: Likewise.
- gcc.target/mips/timode-1.c: Likewise.
- gcc.target/mips/unaligned-1.c: Likewise.
- gcc.target/mips/madd-3.c: Require MADD.
- gcc.target/mips/madd-9.c: Likewise.
- gcc.target/mips/maddu-3.c: Likewise.
- gcc.target/mips/msub-3.c: Likewise.
- gcc.target/mips/msubu-3.c: Likewise.
- gcc.target/mips/mult-1.c: Require INS and not DMUL.
- gcc.target/mips/mips-ps-type-2.c: Require MADD.PS.
- gcc.target/mips/mips.exp (mips_option_groups): Add ins, dmul, ldc, movn, madd, maddps. (mips-dg-options): INS available from R2. LDC available from MIPS II, DMUL is present in octeon. Describe all features removed from R6.
78645e7 MIPS32R6 and MIPS64R6 support
gcc/ChangeLog | 123 +++++++
gcc/config.gcc | 26 +-
gcc/config/mips/constraints.md | 10 +-
gcc/config/mips/gnu-user.h | 1 +
gcc/config/mips/loongson.md | 30 --
gcc/config/mips/mips-cpus.def | 2 +
gcc/config/mips/mips-modes.def | 3 +
gcc/config/mips/mips-protos.h | 1 +
gcc/config/mips/mips-tables.opt | 406 ++++++++++++------------
gcc/config/mips/mips.c | 265 ++++++++++++++--
gcc/config/mips/mips.h | 139 +++++---
gcc/config/mips/mips.md | 280 +++++++++++++---
gcc/config/mips/netbsd.h | 25 +-
gcc/config/mips/t-isa3264 | 6 +-
gcc/doc/invoke.texi | 15 +-
gcc/doc/md.texi | 6 +-
gcc/testsuite/ChangeLog | 28 ++
gcc/testsuite/gcc.dg/torture/mips-hilo-2.c | 4 +
gcc/testsuite/gcc.dg/torture/pr19683-1.c | 4 +
gcc/testsuite/gcc.target/mips/args-3.c | 2 +-
gcc/testsuite/gcc.target/mips/branch-cost-2.c | 2 +-
gcc/testsuite/gcc.target/mips/call-saved-4.c | 2 +-
gcc/testsuite/gcc.target/mips/dmult-1.c | 2 +-
gcc/testsuite/gcc.target/mips/fpcmp-1.c | 2 +-
gcc/testsuite/gcc.target/mips/fpcmp-2.c | 2 +-
gcc/testsuite/gcc.target/mips/madd-3.c | 2 +-
gcc/testsuite/gcc.target/mips/madd-9.c | 2 +-
gcc/testsuite/gcc.target/mips/maddu-3.c | 2 +-
gcc/testsuite/gcc.target/mips/mips-ps-type-2.c | 2 +-
gcc/testsuite/gcc.target/mips/mips.exp | 66 +++-
gcc/testsuite/gcc.target/mips/movcc-1.c | 2 +-
gcc/testsuite/gcc.target/mips/movcc-2.c | 2 +-
gcc/testsuite/gcc.target/mips/movcc-3.c | 2 +-
gcc/testsuite/gcc.target/mips/msub-3.c | 2 +-
gcc/testsuite/gcc.target/mips/msubu-3.c | 2 +-
gcc/testsuite/gcc.target/mips/mult-1.c | 2 +-
gcc/testsuite/gcc.target/mips/neg-abs-2.c | 2 +-
gcc/testsuite/gcc.target/mips/timode-1.c | 2 +-
gcc/testsuite/gcc.target/mips/unaligned-1.c | 2 +-
libgcc/ChangeLog | 5 +
libgcc/config.host | 4 +-
libgcc/config/mips/mips16.S | 9 +-
42 files changed, 1094 insertions(+), 402 deletions(-)
Upstream: gcc.gnu.org