Arm 霓虹灯:作为IP&;64位的乘法和累加;操作

Arm 霓虹灯:作为IP&;64位的乘法和累加;操作,arm,simd,neon,cortex-a,Arm,Simd,Neon,Cortex A,有没有办法在neon中实现以下逻辑。 因为我没有找到任何用于64位输入和输出值的乘法和累加指令 int64x2_t result; int64x2_t num1; int64x2_t num2; >> result + = num1*num2 << int64x2\t结果; int64x2_t num1; int64x2_t num2; >>result+=num1*num2从技术上讲,两个64位的值可能会产生128位的结果。这就是为什么有以下int64*int32

有没有办法在neon中实现以下逻辑。 因为我没有找到任何用于64位输入和输出值的乘法和累加指令

int64x2_t result;
int64x2_t num1;
int64x2_t num2;

>> result + = num1*num2  <<
int64x2\t结果;
int64x2_t num1;
int64x2_t num2;

>>result+=num1*num2从技术上讲,两个64位的值可能会产生128位的结果。这就是为什么有以下
int64*int32+int32
函数,但没有一个函数接受两个64位输入值

int64x2_t vmlal_s32 (int64x2_t, int32x2_t, int32x2_t);
int64x2_t vqdmlal_s32 (int64x2_t, int32x2_t, int32x2_t);
如果这些操作不适用于您,那么您需要使用标量64*64操作,后跟
vaddq\u s64

注意:Visual Studio为所有体系结构(包括ARM)实现了
\u mul128
\u umul128
\u mulh
)以处理完整的64*64=128位场景