[ARM] Cleanup 64-bit multiplies
commit22a8ab772c37dc6250f2b22afe1e91b55fda41f5
authorWilco Dijkstra <wdijkstr@arm.com>
Wed, 18 Sep 2019 18:33:30 +0000 (18 18:33 +0000)
committerWilco Dijkstra <wilco@gcc.gnu.org>
Wed, 18 Sep 2019 18:33:30 +0000 (18 18:33 +0000)
treec04409ce3b927ff6abffcd3e7af20269c209f6b4
parent0800e23ecf42b8323c226041f3982cd7856061c9
[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.

From-SVN: r275901
gcc/ChangeLog
gcc/config/arm/arm.md
gcc/config/arm/iterators.md