这个问题与 ARM NEON 内在函数有关。我正在使用 ARM neon 内在函数来实现 FIR。我想重新排序四字向量数据。例如,在 Neon 寄存器中有四个 32 位元素 - 例如 Q0 - 大小为 128 位。
A3 A2 A1 A0
我想将 Q0 重新排序为 A0 A1 A2 A3。
有什么选择吗?
阅读http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html以及 ARM 信息中心,我认为以下内容可以满足您的要求:
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