]> git.ipfire.org Git - thirdparty/gcc.git/commit
mips-protos.h (mips_emit_binary): Declare.
authorRichard Sandiford <rdsandiford@googlemail.com>
Sun, 27 Nov 2011 10:09:32 +0000 (10:09 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 27 Nov 2011 10:09:32 +0000 (10:09 +0000)
commita2ccf3c28c9e7a79ace3f0c20d000f285bc732e5
treefc4988c84b4e820e462f8c7da4e0ef7622326369
parent006b72bffc64518d4e486982c548ec831dae2392
mips-protos.h (mips_emit_binary): Declare.

gcc/
* config/mips/mips-protos.h (mips_emit_binary): Declare.
* config/mips/mips.c (mips_emit_binary): Make global.
(mips_set_mips16_mode): Turn off -mfix-r4000 in MIPS16 mode.
(mips_conditional_register_usage): Don't treat LO and HI as
register operands in MIPS16 mode.
(mips_mulsidi3_gen_fn): Use {u,}mulsidi3_{32,64}bit_mips16
for MIPS16 code.
* config/mips/predicates.md (muldiv_target_operand): New predicate.
(move_operand): Allow hilo_operand.
* config/mips/mips.md (mul<mode>3): Explicitly specify LO as the
target of MIPS16 multiplies, then move it into the target register.
(mul<mode>3_internal, *macc2, *msac2): Use muldiv_target_operand.
(<u>mulsidi3_32bit_mips16): New expander.
(<u>mulsidi3_32bit): Use muldiv_target_operand.
(<u>mulsidi3_32bit_r4000): Disable for ISA_HAS_DSP.
(<u>mulsidi3_64bit): Require !TARGET_MIPS16.  Split into
<u>mulsidi3_64bit_split.
(<u>mulsidi3_64bit_mips16): New expander.
(<u>mulsidi3_64bit_split): Likewise, using expansions from
two previous define_splits.
(<u>mulsidi3_64bit_hilo, *muls<u>_di, <u>msubsidi4): Use
muldiv_target_operand.
(<su>mulsi3_highpart): Use <su>mulsi3_highpart_split for MIPS16 code.
(<su>mulsi3_highpart_internal): Require !TARGET_MIPS16.
Split into <su>mulsi3_highpart_split.
(<su>mulsi3_highpart_split): New expander.
(<su>muldi3_highpart): Turn into a define_expand.
Use <su>muldi3_highpart_split for MIPS16 code.
(<su>muldi3_highpart_internal): Renamed from <su>muldi3_highpart.
Require !TARGET_MIPS16.  Split into <su>muldi3_highpart_split.
(<su>muldi3_highpart_split): New expander.
(<u>mulditi3): Explicitly specify LO as the target of MIPS16
multiplies, then move it into the target register.
(<u>mulditi3_internal, <u>maddsidi4): Use muldiv_target_operand.
(divmod<mode>4, udivmod<mode>4): Turn into define_expands.
Use <u>divmod<mode>4_split for MIPS16 code, then explicitly
move LO into operand 0.
(divmod<mode>4_internal, udivmod<mode>4_internal): Renamed
from <u>divmod<mode>4.  Use muldiv_target_operand.
Require !TARGET_MIPS16.  Split into <u>divmod<mode>4_split.
(<u>divmod<mode>4_split): New expander.
(<u>divmod<GPR:mode>4_hilo_<HILO:mode>): Use muldiv_target_operand.
(mfhi<GPR:mode>_<HILO:mode>): Use hilo_operand.

gcc/testsuite/
* gcc.target/mips/mult-2.c, gcc.target/mips/mult-3.c,
gcc.target/mips/mult-4.c, gcc.target/mips/mult-5.c,
gcc.target/mips/mult-6.c, gcc.target/mips/mult-7.c,
gcc.target/mips/mult-8.c, gcc.target/mips/mult-9.c,
gcc.target/mips/mult-10.c, gcc.target/mips/mult-11.c,
gcc.target/mips/mult-12.c, gcc.target/mips/mult-13.c,
gcc.target/mips/mult-14.c, gcc.target/mips/mult-15.c,
gcc.target/mips/mult-16.c, gcc.target/mips/mult-17.c,
gcc.target/mips/mult-18.c, gcc.target/mips/mult-19.c,
gcc.target/mips/div-1.c, gcc.target/mips/div-2.c,
gcc.target/mips/div-3.c, gcc.target/mips/div-4.c,
gcc.target/mips/div-5.c, gcc.target/mips/div-6.c,
gcc.target/mips/div-7.c, gcc.target/mips/div-8.c,
gcc.target/mips/div-9.c, gcc.target/mips/div-10.c,
gcc.target/mips/div-11.c, gcc.target/mips/div-12.c: New tests.
* gcc.target/mips/fix-r4000-1.c (foo, bar): Add NOMIPS16.
* gcc.target/mips/fix-r4000-2.c (foo): Likewise.
* gcc.target/mips/fix-r4000-3.c (foo): Likewise.
* gcc.target/mips/fix-r4000-4.c (foo): Likewise.
* gcc.target/mips/fix-r4000-5.c (foo): Likewise.
* gcc.target/mips/fix-r4000-6.c (foo): Likewise.
* gcc.target/mips/fix-r4000-7.c (foo): Likewise.
* gcc.target/mips/fix-r4000-8.c (foo): Likewise.
* gcc.target/mips/fix-r4000-9.c (foo): Likewise.
* gcc.target/mips/fix-r4000-10.c (foo): Likewise.
* gcc.target/mips/fix-r4000-11.c (foo): Likewise.
* gcc.target/mips/fix-r4000-12.c (foo): Likewise.

From-SVN: r181761
48 files changed:
gcc/ChangeLog
gcc/config/mips/mips-protos.h
gcc/config/mips/mips.c
gcc/config/mips/mips.md
gcc/config/mips/predicates.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/mips/div-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/div-9.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/fix-r4000-1.c
gcc/testsuite/gcc.target/mips/fix-r4000-10.c
gcc/testsuite/gcc.target/mips/fix-r4000-11.c
gcc/testsuite/gcc.target/mips/fix-r4000-12.c
gcc/testsuite/gcc.target/mips/fix-r4000-2.c
gcc/testsuite/gcc.target/mips/fix-r4000-3.c
gcc/testsuite/gcc.target/mips/fix-r4000-4.c
gcc/testsuite/gcc.target/mips/fix-r4000-5.c
gcc/testsuite/gcc.target/mips/fix-r4000-6.c
gcc/testsuite/gcc.target/mips/fix-r4000-7.c
gcc/testsuite/gcc.target/mips/fix-r4000-8.c
gcc/testsuite/gcc.target/mips/fix-r4000-9.c
gcc/testsuite/gcc.target/mips/mult-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-13.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-14.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-15.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-16.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-17.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-18.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-19.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/mult-9.c [new file with mode: 0644]