]> git.ipfire.org Git - thirdparty/gcc.git/commit
[ARM] Cleanup 64-bit multiplies
authorwilco <wilco@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 Sep 2019 18:33:30 +0000 (18:33 +0000)
committerwilco <wilco@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 Sep 2019 18:33:30 +0000 (18:33 +0000)
commitfa761b10d40aaa71e62fbc0c9f2ab8fc07a98b49
treec04409ce3b927ff6abffcd3e7af20269c209f6b4
parent662cc42aed6c639390f2ca9d7d4a3b05aa3aec02
[ARM] Cleanup 64-bit multiplies

Cleanup 64-bit multiplies.  Combine the expanders using iterators.
Merge the signed/unsigned multiplies as well as the pre-Armv6 and Armv6
variants.  Split DImode operands early into parallel sets inside the
MULL/MLAL instructions - this improves register allocation and avoids
subreg issues due to other DImode operations splitting early.

    gcc/
* config/arm/arm.md (maddsidi4): Remove expander.
(mulsidi3adddi): Remove pattern.
(mulsidi3adddi_v6): Likewise.
(mulsidi3_nov6): Likewise.
(mulsidi3_v6): Likewise.
(umulsidi3): Remove expander.
(umulsidi3_nov6): Remove pattern.
(umulsidi3_v6): Likewise.
(umulsidi3adddi): Likewise.
(umulsidi3adddi_v6): Likewise.
(<Us>mulsidi3): Add combined expander.
(<Us>maddsidi4): Likewise.
(<US>mull): Add combined umull and smull pattern.
(<US>mlal): Likewise.
* config/arm/iterators.md (Us): Add new iterator.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@275901 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/arm/arm.md
gcc/config/arm/iterators.md