neon:乘以和累加64位作为IP& OP

时间:2015-05-22 11:47:00

标签: arm simd neon cortex-a

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

int64x2_t result;
int64x2_t num1;
int64x2_t num2;

>> result + = num1*num2  <<

1 个答案:

答案 0 :(得分:1)

从技术上讲,两个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_s64

注意:Visual Studio为包括ARM在内的所有体系结构实现_mul128__umul128_mulh__umulh,以处理完整的64 * 64 = 128位方案。< / p>