[AArch64] Custom Lower MULLH{S,U} for v16i8, v8i16, and v4i32
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 4 May 2018 14:33:55 +0000 (14:33 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 4 May 2018 14:33:55 +0000 (14:33 +0000)
commita57ef17ab6435808622ce383dc71665b8a43aea4
tree48304bd957093a7f6218cb9bb7434e354655fe95
parent2689d9f4f0ec66245cf4eafb8c3cacc3c01936ff
[AArch64] Custom Lower MULLH{S,U} for v16i8, v8i16, and v4i32

This patch adds a custom lowering for ISD::MULH{S,U} used on divide by
constant optimization (DAGCombiner::BuildSDIV and DAGCombiner::BuildUDIV).

New patterns for smull and umull are added, so AArch64ISD::{S,U}MULL
can be correctly lowered to smull2 and umull2.

Reviewed By: SjoerdMeijer

Differential Revision: https://reviews.llvm.org/D46009

llvm-svn: 331522
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/AArch64InstrInfo.td
llvm/test/CodeGen/AArch64/neon-idiv.ll