[ARM][MVE] Add vector reduction intrinsics with two vector operands
authorMikhail Maltsev <mikhail.maltsev@arm.com>
Fri, 13 Dec 2019 13:17:29 +0000 (13:17 +0000)
committerMikhail Maltsev <mikhail.maltsev@arm.com>
Fri, 13 Dec 2019 13:17:29 +0000 (13:17 +0000)
commit99581fd4c8e12f5eca38e7cfc5992508a9bfe383
treeef38e7222ec01a704bf419825756cab9bd7120b5
parent1cc4b603ba79c8bf8f60790cff31f872e7d00142
[ARM][MVE] Add vector reduction intrinsics with two vector operands

Summary:
This patch adds intrinsics for the following MVE instructions:
* VABAV
* VMLADAV, VMLSDAV
* VMLALDAV, VMLSLDAV
* VRMLALDAVH, VRMLSLDAVH

Each of the above 4 groups has a corresponding new LLVM IR intrinsic,
since the instructions cannot be easily represented using
general-purpose IR operations.

Reviewers: simon_tatham, ostannard, dmgreen, MarkMurrayARM

Reviewed By: MarkMurrayARM

Subscribers: merge_guards_bot, kristof.beyls, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D71062
clang/include/clang/Basic/arm_mve.td
clang/include/clang/Basic/arm_mve_defs.td
clang/test/CodeGen/arm-mve-intrinsics/vabavq.c [new file with mode: 0644]
clang/test/CodeGen/arm-mve-intrinsics/vmldav.c [new file with mode: 0644]
clang/test/CodeGen/arm-mve-intrinsics/vmlldav.c [new file with mode: 0644]
llvm/include/llvm/IR/IntrinsicsARM.td
llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
llvm/lib/Target/ARM/ARMInstrMVE.td
llvm/test/CodeGen/Thumb2/mve-intrinsics/vabavq.ll [new file with mode: 0644]
llvm/test/CodeGen/Thumb2/mve-intrinsics/vmldav.ll [new file with mode: 0644]
llvm/test/CodeGen/Thumb2/mve-intrinsics/vmlldav.ll [new file with mode: 0644]