2010-12-20 85 views
0

這個問題與ARM NEON內在函數有關。 Iam使用ARM霓虹內在函數實現FIR。 我想重新排序四字矢量數據。 例如, 在Neon寄存器中有四個32位元素 - 比方說Q0,它的大小爲128位。如何使用Neon Intrinsics重新排列四維矢量數據?

A3 A2 A1 A0

我要重新排序Q0爲A0 A1 A2 A3。

有沒有辦法做到這一點?

回答

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