[ARC] Rework ARC600 64-bit multiplication patterns.
authorClaudiu Zissulescu <claziss@synopsys.com>
Fri, 16 Dec 2016 12:56:09 +0000 (13:56 +0100)
committerClaudiu Zissulescu <claziss@gcc.gnu.org>
Fri, 16 Dec 2016 12:56:09 +0000 (13:56 +0100)
commitd476b53c3651786fa283f89ad9434731f4f902e9
tree1eac28fb70034876808df669e37acd4f99b4f50c
parentcc0ca4999b681022fe5a409d187d4af2f86adff2
[ARC] Rework ARC600 64-bit multiplication patterns.

Previously users of mulsidi_600 and umulsidi_600 had to take care of
moving the multiplication result into the final destination themselves
(from the MUL64_OUT_REG register).  This commit converts these two
instruction patterns into insn_and_split patterns that now take the
final destination as an extra operand.  The insn_and_split patterns
generate the multiplication using two new multiplication instruction
patterns, then generate the move of the result from the MUL64_OUT_REG
register into the final destination.

This is a clean up commit, there should be no user visible changes
after this commit.

2016-12-16  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.md (mulsidi_600): Change to insn_and_split,
generate new mul64 insn for core multiplication work.
(umulsidi_600): Likewise, but use mulu64 insn.
(mul64): New pattern, content taken from old mulsidi_600 insn
pattern.
(mulu64): Likewise, but using umulsidi_600.
(mulsidi3): Remove move to destination, this is now handled by
mulsidi_600 insn_and_split.
(umulsidi3): Likewise, but using umulsidi_600.

From-SVN: r243741
gcc/ChangeLog
gcc/config/arc/arc.md