NEON固有的Q寄存器的两个子部分之和

时间:2018-03-27 11:04:35

标签: arm neon

我在uint16x8_t(Q寄存器)中有一个值。如果它是asm,我会添加寄存器的两个子部分,例如对于Q0,我需要vadd_u16(d0, d1)结果。问题是我不知道如何使用氖内在函数来获得它,因为没有从uint16x8_t到uint16x4x2_t的转换,以便能够将低和高的部分传递给vadd_u16。

有很多vreinterpret_x_y宏,但没有一个宏从uint16x8_t转换为uint16x4x2_t。我是否遗漏了一些东西,这种操作应该如何用手臂霓虹灯来完成?

1 个答案:

答案 0 :(得分:2)

您可以使用vget_low and vget_high

然而,问题是编译器会彻底弄乱它,导致可怕的性能损失。

Android Studio中的内置Clang处理起来特别糟糕,GCC版本低于6.x

您唯一的选择是将工具链更新为最新的工具链,或坚持装配。

相关问题