The following instructions are added to AArch32 instruction set:
- VQRDMLAH: Vector Saturating Rounding Doubling Multiply Accumulate Returning High Half
- VQRDMLSH: Vector Saturating Rounding Doubling Multiply Subtract Returning High Half
The following instructions are added to AArch64 instruction set:
- SQRDMLAH: Signed Saturating Rounding Doubling Multiply Accumulate Returning High Half
- SQRDMLSH: Signed Saturating Rounding Doubling Multiply Subtract Returning High Half
This patch adds intrinsic and ACLE macro support for these instructions, as well as corresponding tests.
@labrinea
It seems QRDMLSH(p0, p1, p2) is not equivelent to with vqsub( p0, vqrdmulh(p1, p2)).
p0<< esize + rounding_const
p0<< esize - rounding_const
Here is an example where the results are not same.
vqrdmlshq_s16 ( -197, -512, 11040) = -24
vqsubq_s16( -197, vqrdmulhq_n_s16(-512, 11040)) = -25