0
這個問題與ARM NEON內在函數有關。 Iam使用ARM霓虹內在函數實現FIR。 我想重新排序四字矢量數據。 例如, 在Neon寄存器中有四個32位元素 - 比方說Q0,它的大小爲128位。如何使用Neon Intrinsics重新排列四維矢量數據?
A3 A2 A1 A0
我要重新排序Q0爲A0 A1 A2 A3。
有沒有辦法做到這一點?
這個問題與ARM NEON內在函數有關。 Iam使用ARM霓虹內在函數實現FIR。 我想重新排序四字矢量數據。 例如, 在Neon寄存器中有四個32位元素 - 比方說Q0,它的大小爲128位。如何使用Neon Intrinsics重新排列四維矢量數據?
A3 A2 A1 A0
我要重新排序Q0爲A0 A1 A2 A3。
有沒有辦法做到這一點?
與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