neon指令,注意事项

时间:2023-03-08 22:20:35

1. vbic_s8 (int8x8_t a, int8x8_t b) 是  ~(ai & bi),一开始理解成  (~ai )& bi 导致出错

2.uint8x8_t vqshrn_n_u16 (uint16x8_t __a, const int __b); 饱和窄型右移

uint8x8_t vshrn_n_u16 (uint16x8_t __a, const int __b);  窄型右移,直接copy低8位

比如1024右移一位,前者=255,后者=0

http://blog.****.net/emsoften/article/details/51718763

3. uint8x8_t vhsub_u8 (uint8x8_t __a, uint8x8_t __b);  减后的结果右移1位

如果结果是正数没有疑问,如果是负的呢?会不会饱和成0

uint8x8_t a = vhsub_u8 (vdup_n_u8(4),vdup_n_u8(6) );

printf("%x",a[0]); 结果是ff,说明 负数的结果仍然不改变每个bit位,再右移移位得到最终结果.

减法变加法-计算机中的补码表示 http://blog.****.net/wongson/article/details/8036219