[AArch64][SVE] Lower MULHU/MULHS nodes to umulh/smulh instructions
authorBradley Smith <bradley.smith@arm.com>
Tue, 13 Apr 2021 14:19:59 +0000 (15:19 +0100)
committerBradley Smith <bradley.smith@arm.com>
Tue, 20 Apr 2021 14:18:06 +0000 (15:18 +0100)
commitb8b075d8d744a84de60171c6395fc7c6190d21ca
treef8bbf49c1bae66d4b686bd5cc294f7d4a36d29d8
parentcf00cb8bed72c5ad43d347643b7c575eaa1b23a8
[AArch64][SVE] Lower MULHU/MULHS nodes to umulh/smulh instructions

Mark MULHS/MULHU nodes as legal for both scalable and fixed SVE types,
and lower them to the appropriate SVE instructions.

Additionally now that the MULH nodes are legal, integer divides can be
expanded into a more performant code sequence.

Differential Revision: https://reviews.llvm.org/D100487
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.h
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
llvm/test/CodeGen/AArch64/sve-expand-div.ll [new file with mode: 0644]
llvm/test/CodeGen/AArch64/sve-fixed-length-int-div.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-int-mulh.ll [new file with mode: 0644]
llvm/test/CodeGen/AArch64/sve-int-arith-imm.ll
llvm/test/CodeGen/AArch64/sve-int-mulh-pred.ll [new file with mode: 0644]
llvm/test/CodeGen/AArch64/sve2-int-mulh.ll [new file with mode: 0644]