SIMD ISAReturn TypeNameArgumentsInstruction Group
Heliumint64_t[__arm_]vmlaldavaq_p[_s32](int64_t add, int32x4_t m1, int32x4_t m2, mve_pred16_t p)Vector arithmetic / Multiply / Multiply-accumulate
Description
The elements of the vector registers are handled in pairs. In the base variant, corresponding elements from the two source registers are multiplied together, whereas the exchange variant swaps the values in each pair of values read from the first source register, before multiplying them with the values from the second source register. The results of the pairs of multiply operations are combined by adding them together. At the end of each beat these results are accumulated. The 64 bit result is stored across two registers, the upper-half is stored in an odd-numbered register and the lower half is stored in an even-numbered register. The initial value of the general-purpose destination registers can optionally be added to the result.
Results
[RdaHi,RdaLo] result
This intrinsic compiles to the following instructions:

VMSR P0,Rp

VPST

VMLALDAVAT.S32 RdaLo,RdaHi,Qn,Qm

Argument Preparation
add register: [RdaHi,RdaLo]m1 register: Qnm2 register: Qmp register: Rp
Architectures
MVE