[ARM,MVE] Add vector-scalar intrinsics
authorMikhail Maltsev <mikhail.maltsev@arm.com>
Mon, 17 Feb 2020 17:47:05 +0000 (17:47 +0000)
committerMikhail Maltsev <mikhail.maltsev@arm.com>
Mon, 17 Feb 2020 17:47:05 +0000 (17:47 +0000)
commit489f62e8011f54fc94d9c3a4cc2d1d66d3b5bc49
tree581738b57ae06b92ac599092225d16efe6d651a0
parentf9b45f857ff1e8d832922778b5f12daab9d43638
[ARM,MVE] Add vector-scalar intrinsics

Summary:
This patch adds vector-scalar variants to the following families of
MVE intrinsics:
* vaddq
* vsubq
* vmulq
* vqaddq
* vqsubq
* vhaddq
* vhsubq
* vqdmulhq
* vqrdmulhq

The vector-scalar variants perform a splat operation on the scalar
operand and then perform the same operations as their vector-vector
counterparts. Code generation is done accordingly (using LLVM IR 'insert'
and 'shuffle' operations which are later converted into an ARMvdup
SDNode).

Reviewers: simon_tatham, dmgreen, MarkMurrayARM, ostannard

Reviewed By: dmgreen

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

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D74620
21 files changed:
clang/include/clang/Basic/arm_mve.td
clang/include/clang/Basic/arm_mve_defs.td
clang/test/CodeGen/arm-mve-intrinsics/vaddq.c
clang/test/CodeGen/arm-mve-intrinsics/vhaddq.c
clang/test/CodeGen/arm-mve-intrinsics/vhsubq.c
clang/test/CodeGen/arm-mve-intrinsics/vmulq.c
clang/test/CodeGen/arm-mve-intrinsics/vqaddq.c
clang/test/CodeGen/arm-mve-intrinsics/vqdmulhq.c
clang/test/CodeGen/arm-mve-intrinsics/vqrdmulhq.c
clang/test/CodeGen/arm-mve-intrinsics/vqsubq.c
clang/test/CodeGen/arm-mve-intrinsics/vsubq.c
llvm/lib/Target/ARM/ARMInstrMVE.td
llvm/test/CodeGen/Thumb2/mve-intrinsics/vaddq.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vhaddq.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vhsubq.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vmulq.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vqaddq.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vqdmulhq.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vqrdmulhq.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vqsubq.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vsubq.ll