这个问题与ARM NEON内在函数有关。 我使用ARM neon内在函数进行FIR实现。 我想重新排序四字矢量数据。 例如, 氖寄存器中有四个32位元素 - 比如Q0--大小为128位。
A3 A2 A1 A0
我想将Q0重新排序为A0 A1 A2 A3。
有没有选择呢?
答案 0 :(得分:3)
与ARM信息中心一起阅读http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html,我认为以下内容可以满足您的要求:
uint32x2_t dvec_h = vget_high_u32(qvec);
uint32x2_t dvec_l = vget_low_u32(qvec);
dvec_h = vrev64_u32(dvec_h);
dvec_l = vrev64_u32(dvec_l);
qvec = vcombine_u32(dvec_h, dvec_l);
在汇编中,这可以简单地写成:
VSWP d0, d1
VREV64.32 q0, q0