* Revamped multiply support for MIPS chips.
authorKen Raeburn <raeburn@cygnus.com>
Mon, 8 Jun 1998 15:56:47 +0000 (15:56 +0000)
committerJeff Law <law@gcc.gnu.org>
Mon, 8 Jun 1998 15:56:47 +0000 (09:56 -0600)
commitcb92366029011ef6ee679a2540a2c6a77ad7372e
tree910e5fa6251514ebff40b3b55346909bdfba1dea
parenta1622f838f1188fca74ba0186300882f33006ae7
* Revamped multiply support for MIPS chips.

        * mips.c (extend_operator): New function.
        (highpart_shift_operator): Likewise.
        * mips.h: Declare new functions.
        (PREDICATE_CODES): Add support for new predicates.
        * mips.md (mulsi3 expander): Simplify.
        (mulsi_mult3): Add another constraint alternative.  Support
        3 operand multiply instructions as found on various mips
        parts.
        (mulsi3_r4650): Delete pattern, now handled by mulsi_mult3.
        (mul_acc_si): New pattern and associated splitters.
        (mulsidi3 expander): Rework to use mulsidi3_64bit and
        mulsidi3_internal.
        (umulsidi3): New expander.
        (mulsidi3_internal): Accept either sign or zero extended
        operands and generate code as appropriate appropriately.
        (mulsidi3_64bit): Similarly.
        (smulsi3_highpart): Turn into an expander and generate code
        to match new patterns.
        (umulsi3_highpart): Likewise.
        (xmulsi3_highpart_internal): New pattern.
        (maddi patterns): Delete.  Replace with:
        (mul_acc_di, mul-acc_64bit_di): New patterns.

Co-Authored-By: Jeffrey A Law <law@cygnus.com>
From-SVN: r20337
gcc/ChangeLog
gcc/config/mips/mips.c
gcc/config/mips/mips.h
gcc/config/mips/mips.md