我想切换存储在128位(四字)NEON寄存器中的两个元素。
[a3, a2, a1, a0] --> [a3, a1, a2, a0]
在阅读GNU的“ARM NEON内在函数”和ARM ACLE之后,它似乎可以完成:
// qr0 being the input vector variable of type float32x4_t
float32x2_t hi = vget_high_f32(qr0);
float32x2_t lo = vget_low_f32(qr0);
float32x2x2_t qr0_z = vzip_f32(hi, lo); //may also use transpose
qr0 = vcombine_f32(qr0_z.val[0], qr0_z.val[1]);
我的问题是:这是通过内在函数做到这一点的更好方法吗?感谢您阅读本文。