llvm-project/llvm/test/CodeGen/Thumb2/mve-intrinsics
Simon Tatham e13d153c1b [ARM,MVE] Add intrinsics for the VQDMLAD family.
Summary:
This is another set of instructions too complicated to be sensibly
expressed in IR by anything short of a target-specific intrinsic.
Given input vectors a,b, the instruction generates intermediate values
2*(a[0]*b[0]+a[1]+b[1]), 2*(a[2]*b[2]+a[3]+b[3]), etc; takes the high
half of each double-width values, and overwrites half the lanes in the
output vector c, which you therefore have to provide the input value
of. Optionally you can swap the elements of b so that the are things
like a[0]*b[1]+a[1]*b[0]; optionally you can round to nearest when
taking the high half; and optionally you can take the difference
rather than sum of the two products. Finally, saturation is applied
when converting back to a single-width vector lane.

Reviewers: dmgreen, MarkMurrayARM, miyuki, ostannard

Reviewed By: miyuki

Subscribers: kristof.beyls, hiraditya, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D76359
2020-03-18 17:11:22 +00:00
..
absneg-predicated.ll [ARM,MVE] Add predicated intrinsics for many unary functions. 2020-02-26 15:12:07 +00:00
bitwise-imm.ll [ARM,MVE] Support immediate vbicq,vorrq,vmvnq intrinsics. 2020-01-23 11:53:52 +00:00
dup.ll [ARM,MVE] Add intrinsics for vdupq. 2020-02-03 11:20:06 +00:00
idup.ll [ARM,MVE] Add intrinsics for v[id]dupq and v[id]wdupq. 2020-02-03 11:20:06 +00:00
load-store.ll [ARM] Enable MVE masked loads and stores 2019-12-09 11:37:34 +00:00
longshift-const.ll [ARM] Constant long shift combines 2020-03-13 08:54:59 +00:00
longshift-demand.ll [ARM] Constant long shift combines 2020-03-13 08:54:59 +00:00
predicates.ll [ARM,MVE] Add intrinsics to deal with predicates. 2019-12-02 16:20:30 +00:00
scalar-shifts.ll [ARM,MVE] Add intrinsics for scalar shifts. 2019-11-19 14:47:29 +00:00
scatter-gather.ll [MVE] Fixup order of gather writeback intrinsic outputs 2020-01-27 14:08:06 +00:00
ternary.ll [ARM,MVE] Add intrinsics for the VQDMLAH family. 2020-03-18 10:55:04 +00:00
vabavq.ll [ARM][MVE] Add vector reduction intrinsics with two vector operands 2019-12-13 13:17:29 +00:00
vabdq.ll [ARM,MVE] Fix many signedness errors in MVE intrinsics. 2020-01-06 16:33:16 +00:00
vadc-multiple.ll [InstCombine] Known-bits optimization for ARM MVE VADC. 2019-10-24 16:33:13 +01:00
vadc.ll [ARM,MVE] Add the `vsbciq` intrinsics. 2020-03-04 08:49:27 +00:00
vaddq.ll [ARM,MVE] Add vector-scalar intrinsics 2020-02-17 17:47:05 +00:00
vandq.ll [ARM][MVE][Intrinsics] Add *_x() variants of my *_m() intrinsics. 2019-12-13 11:51:23 +00:00
vbicq.ll [ARM][MVE][Intrinsics] Add *_x() variants of my *_m() intrinsics. 2019-12-13 11:51:23 +00:00
vbrsrq.ll [ARM,MVE] Add vbrsrq intrinsics family 2020-02-18 17:31:21 +00:00
vcaddq.ll [ARM][MVE] Refactor complex vector intrinsics [NFCI] 2019-12-10 16:21:52 +00:00
vcls.ll [ARM,MVE] Add intrinsics vclzq and vclsq. 2020-02-18 09:34:50 +00:00
vclzcls-predicated.ll [ARM,MVE] Add predicated intrinsics for many unary functions. 2020-02-26 15:12:07 +00:00
vcmlaq.ll [ARM][MVE] Add complex vector intrinsics 2019-12-09 12:05:59 +00:00
vcmulq.ll [ARM][MVE] Add complex vector intrinsics 2019-12-09 12:05:59 +00:00
vcvt-fp-int.ll [ARM,MVE] Add predicated intrinsics for many unary functions. 2020-02-26 15:12:07 +00:00
vcvt.ll [ARM,MVE] Add ACLE intrinsics for VCVT.F32.F16 family. 2020-03-02 10:33:30 +00:00
vcvt_anpm.ll [ARM,MVE] Add ACLE intrinsics for VCVT[ANPM] family. 2020-03-02 10:33:30 +00:00
vector-shift-imm-dyadic.ll [ARM,MVE] Intrinsics for partial-overwrite imm shifts. 2020-01-08 14:42:24 +00:00
vector-shift-imm.ll [ARM,MVE] Fix predicate types of some intrinsics 2020-02-19 16:24:54 +00:00
vector-shift-var.ll [ARM,MVE] Intrinsics for variable shift instructions. 2020-01-08 14:42:24 +00:00
veorq.ll [ARM][MVE][Intrinsics] Add *_x() variants of my *_m() intrinsics. 2019-12-13 11:51:23 +00:00
vhaddq.ll [ARM,MVE] Add vector-scalar intrinsics 2020-02-17 17:47:05 +00:00
vhsubq.ll [ARM,MVE] Add vector-scalar intrinsics 2020-02-17 17:47:05 +00:00
vld24.ll [ARM] MVE VLDn postinc 2020-01-20 06:57:07 +00:00
vldr.ll [MVE] Fixup order of gather writeback intrinsic outputs 2020-01-27 14:08:06 +00:00
vmaxaq.ll [ARM][MVE][Intrinsics] Add VMINAQ, VMINNMAQ, VMAXAQ, VMAXNMAQ intrinsics. 2020-01-15 17:20:15 +00:00
vmaxnmaq.ll [ARM][MVE][Intrinsics] Take abs() of VMINNMAQ, VMAXNMAQ intrinsics' first arguments. 2020-01-20 14:33:26 +00:00
vmaxnmq.ll [ARM,MVE] Fix many signedness errors in MVE intrinsics. 2020-01-06 16:33:16 +00:00
vmaxq.ll [ARM,MVE] Fix many signedness errors in MVE intrinsics. 2020-01-06 16:33:16 +00:00
vminaq.ll [ARM][MVE][Intrinsics] Add VMINAQ, VMINNMAQ, VMAXAQ, VMAXNMAQ intrinsics. 2020-01-15 17:20:15 +00:00
vminnmaq.ll [ARM][MVE][Intrinsics] Take abs() of VMINNMAQ, VMAXNMAQ intrinsics' first arguments. 2020-01-20 14:33:26 +00:00
vminnmq.ll [ARM,MVE] Fix many signedness errors in MVE intrinsics. 2020-01-06 16:33:16 +00:00
vminq.ll [ARM,MVE] Fix many signedness errors in MVE intrinsics. 2020-01-06 16:33:16 +00:00
vminvq.ll
vmldav.ll [ARM][MVE] Add vector reduction intrinsics with two vector operands 2019-12-13 13:17:29 +00:00
vmlldav.ll [ARM][MVE] Add vector reduction intrinsics with two vector operands 2019-12-13 13:17:29 +00:00
vmovl.ll [ARM,MVE] Add predicated intrinsics for many unary functions. 2020-02-26 15:12:07 +00:00
vmovn.ll [ARM,MVE] Add predicated intrinsics for many unary functions. 2020-02-26 15:12:07 +00:00
vmulhq.ll [ARM,MVE] Fix many signedness errors in MVE intrinsics. 2020-01-06 16:33:16 +00:00
vmullbq.ll [ARM,MVE] Fix predicate types of some intrinsics 2020-02-19 16:24:54 +00:00
vmulltq.ll [ARM,MVE] Fix predicate types of some intrinsics 2020-02-19 16:24:54 +00:00
vmulq.ll [ARM,MVE] Add vector-scalar intrinsics 2020-02-17 17:47:05 +00:00
vornq.ll [ARM][MVE][Intrinsics] Add *_x() variants of my *_m() intrinsics. 2019-12-13 11:51:23 +00:00
vorrq.ll [ARM][MVE][Intrinsics] Add *_x() variants of my *_m() intrinsics. 2019-12-13 11:51:23 +00:00
vqaddq.ll [ARM,MVE] Add vector-scalar intrinsics 2020-02-17 17:47:05 +00:00
vqdmlad.ll [ARM,MVE] Add intrinsics for the VQDMLAD family. 2020-03-18 17:11:22 +00:00
vqdmulhq.ll [ARM,MVE] Add vector-scalar intrinsics 2020-02-17 17:47:05 +00:00
vqdmull.ll [ARM,MVE] Add vqdmull[b,t]q intrinsic families 2020-02-20 10:51:19 +00:00
vqmovn.ll [ARM,MVE] Add ACLE intrinsics for VQMOV[U]N family. 2020-03-02 10:33:30 +00:00
vqrdmulhq.ll [ARM,MVE] Add vector-scalar intrinsics 2020-02-17 17:47:05 +00:00
vqsubq.ll [ARM,MVE] Add vector-scalar intrinsics 2020-02-17 17:47:05 +00:00
vrev.ll [ARM,MVE] Add predicated intrinsics for many unary functions. 2020-02-26 15:12:07 +00:00
vrhaddq.ll [ARM,MVE] Fix many signedness errors in MVE intrinsics. 2020-01-06 16:33:16 +00:00
vrint-predicated.ll [ARM,MVE] Add predicated intrinsics for many unary functions. 2020-02-26 15:12:07 +00:00
vrintn.ll [ARM,MVE] Add intrinsics for FP rounding operations. 2020-02-18 09:34:50 +00:00
vrmulhq.ll [ARM,MVE] Fix many signedness errors in MVE intrinsics. 2020-01-06 16:33:16 +00:00
vshlc.ll [ARM,MVE] Add the `vshlcq` intrinsics. 2020-03-04 08:49:27 +00:00
vsubq.ll [ARM,MVE] Add vector-scalar intrinsics 2020-02-17 17:47:05 +00:00