predicates.md (qi_mask_operand, [...]): New predicates.
authorAdam Nemet <anemet@caviumnetworks.com>
Tue, 11 Aug 2009 17:41:09 +0000 (17:41 +0000)
committerAdam Nemet <nemet@gcc.gnu.org>
Tue, 11 Aug 2009 17:41:09 +0000 (17:41 +0000)
commitb2c9d70fd7eb8e39aefb7d6d2329ccbd5da15b36
tree65c7c636969426abfeb559712330ea2dbb860d4b
parent842e098c5ff56730b4d84d5560eb4053a12ebd61
predicates.md (qi_mask_operand, [...]): New predicates.

* config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
si_mask_operand, and_load_operand, low_bitmask_operand,
and_reg_operand, and_operand): New predicates.
* config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
* config/mips/mips.c (and_operands_ok): New function.
* config/mips/mips-protos.h (and_operands_ok): Declare it.
* config/mips/mips.md (move_type): Add ext_ins and logical.
(type): Handle them.
(and<mode>3): Use and_reg_operand as the second operand's
predicate.
(*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
shift_shift.  Remove commutative constraint modifier.
(*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
shift_shift.
(*clear_upper32_dext): Remove define_insn_and_split.
(*clear_upper32): Turn this define_insn_and_split ...
(splitter for ANDing register with 0xffff_ffff): .. into this.

testsuite/
* gcc.target/mips/ext-5.c: New test.
* gcc.target/mips/ext-6.c: New test.
* gcc.target/mips/ext-7.c: New test.
* gcc.target/mips/ext-8.c: New test.
* gcc.target/mips/extend-2.c: New test.

From-SVN: r150657
12 files changed:
gcc/ChangeLog
gcc/config/mips/constraints.md
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/ext-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/ext-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/ext-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/ext-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/mips/extend-2.c [new file with mode: 0644]