问题描述
NEON 数据类型中的整数
输入 | 8-bit | 16 位 |
---|---|---|
无符号整数 | U8 | U16 |
有符号整数 | S8 | S16 |
未指定类型的整数 | I8 | I16 |
I8
和 S8
有什么区别?
解决方法
评论已经描述了它们,Peter Cordes 完美地总结了这个想法:
大概适用于 shuffle 或二进制加法等操作 / 减法,其中运算对于有符号或 未签名
集中回答Neon的指令集,大部分指令只接受特定的数据类型,规则是:
- 当
I
有效时,S
和U
也是 - 仅指定数据大小时,
U
、S
和I
有效(还有 P 和 F) - 有些指令会忽略数据类型
- 当没有数据类型时,任何一种都有效
很容易知道哪些指令将指定数据类型,即:
-
为了获得绝对值,
VABS
只接受S
类型(注意它也允许 F32)。 -
有些指令接受
I
,因此它们也接受S
和U
,例如按位 AND (VAND
)。