md.texi: Synchronize with later constraints.md change.
authorRichard Sandiford <rdsandiford@googlemail.com>
Mon, 9 Jun 2008 20:45:56 +0000 (20:45 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 9 Jun 2008 20:45:56 +0000 (20:45 +0000)
commit21dfc6dc74ab21fe6d5dc487c20cb121cacc7528
treef6314c47b12d23fdd1338cdea0f0437befdc3b11
parent0e462a951b6de1354da41ecac9ee796e256a9fa5
md.texi: Synchronize with later constraints.md change.

gcc/
* doc/md.texi: Synchronize with later constraints.md change.
* longlong.h (umul_ppmm): Replace the MIPS asm implementation
with a C implementation.
* config/mips/mips.c (mips_legitimize_move): Remove MFHI and
MFLO handling.
(mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
(mips_split_doubleword_move): Use special MTHI and MFHI instructions
when moving to and from MD_REGNUM.
(mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
Handle byte and halfword moves.
(mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
separately.
* config/mips/constraints.md (h): Turn into NO_REGS.
(l, x): Update documentation.
* config/mips/mips.md (UNSPEC_MFHILO): Delete.
(UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
(UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
(HILO): New mode iterator.
(MOVE128): Add TI.
(any_div): New code iterator.
(u): Extend code attribute to div and udiv.
(*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
d_operand in the splitters.  Remove redundant CONST_INT checks.
(mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
(*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
(*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
accordingly, using normal moves instead of unspecs to move LO into
a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
(<u>mulsidi3): Handle expansion in C code.
(<u>mulsidi3_32bit_internal): Rename to...
(<u>mulsidi3_32bit): ...this.
(<u>mulsidi3_32bit_r4000): Fix insn separator.
(*<u>mulsidi3_64bit): Rename to...
(<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
to set LO and HI to the multiplication result.  Use a normal move
for MFLO and an unspec for MFHI.
(*<u>mulsidi3_64bit_parts): Replace with...
(<u>mulsidi3_64bit_hilo): ...this new instruction.
(<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
(<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
instead of HI.  Split the instruction into a separate multiplication
and MFHI if !TARGET_FIX_R4000.
(<su>muldi3_highpart): Likewise.
(<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
and the "=h" clobber.
(*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
(<u>mulditi3): New expander.
(<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
(madsi): Remove "=h" clobber.
(divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
Force the modulus result to be a GPR and split the instruction into
a division followed by an MFHI after reload.
(<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
(*lea_high64): Use d_operand in the define_peephole2.  Likewise
the MIPS16 HIGH define_split.
(*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
of acc<->gpr moves to "multi".
(*movdi_64bit): Replace the single "x" alternative with
alternatives for moving into and out of "a".
(*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
(*movsi_internal): Extend the "d<-A" alternative to "d<-a".
(*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
Use d_operand in the splitters.  Remove redundant CONST_INT checks.
(*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
(movti): New expander.
(*movti, *movti_mips16): New insns.
(mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
(mfhi<GPR:mode>_<HILO:mode>): New pattern.
(mthi<GPR:mode>_<HILO:mode>): Likewise.
* config/mips/predicates.md (fpr_operand): Delete.
(d_operand): New predicate.

gcc/testsuite/
* gcc.dg/torture/mips-hilo-1.c: Delete.
* gcc.target/mips/pr35232.c: Likewise.
* gcc.target/mips/fix-vr4130-1.c: Use modulus to create an mfhi.
* gcc.target/mips/fix-vr4130-3.c: Likewise.
* gcc.target/mips/int-moves-1.c: New test.
* gcc.target/mips/int-moves-2.c: Likewise.
* gcc.target/mips/fix-r4000-1.c: Likewise.
* gcc.target/mips/fix-r4000-2.c: Likewise.
* gcc.target/mips/fix-r4000-3.c: Likewise.
* gcc.target/mips/fix-r4000-4.c: Likewise.
* gcc.target/mips/fix-r4000-5.c: Likewise.
* gcc.target/mips/fix-r4000-6.c: Likewise.
* gcc.target/mips/fix-r4000-7.c: Likewise.
* gcc.target/mips/fix-r4000-8.c: Likewise.
* gcc.target/mips/fix-r4000-9.c: Likewise.
* gcc.target/mips/fix-r4000-10.c: Likewise.
* gcc.target/mips/fix-r4000-11.c: Likewise.
* gcc.target/mips/fix-r4000-12.c: Likewise.
* gcc.target/mips/timode-1.c: Likewise.
* gcc.target/mips/timode-2.c: Likewise.

From-SVN: r136600
28 files changed:
gcc/ChangeLog
gcc/config/mips/constraints.md
gcc/config/mips/mips.c
gcc/config/mips/mips.md
gcc/config/mips/predicates.md
gcc/doc/md.texi
gcc/longlong.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/mips-hilo-1.c [deleted file]
gcc/testsuite/gcc.target/mips/fix-r4000-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-9.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-vr4130-1.c
gcc/testsuite/gcc.target/mips/fix-vr4130-3.c
gcc/testsuite/gcc.target/mips/int-moves-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/int-moves-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/pr35232.c [deleted file]
gcc/testsuite/gcc.target/mips/timode-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/timode-2.c [new file with mode: 0644]