如何使用Neon Intrinsics重新排序四字矢量数据?

时间:2010-12-20 13:10:08

标签: arm neon

这个问题与ARM NEON内在函数有关。 我使用ARM neon内在函数进行FIR实现。 我想重新排序四字矢量数据。 例如, 氖寄存器中有四个32位元素 - 比如Q0--大小为128位。

A3 A2 A1 A0

我想将Q0重新排序为A0 A1 A2 A3。

有没有选择呢?

1 个答案:

答案 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