NEON 如何处理溢出?
Posted
技术标签:
【中文标题】NEON 如何处理溢出?【英文标题】:How NEON handle overflow? 【发布时间】:2012-06-13 01:50:34 【问题描述】:我想知道 Neon 是如何处理溢出的。例如:
uint8x8_t vadd_u8 (uint8x8_t, uint8x8_t)
据我了解,这是 2 个向量的加法(每个向量都有 8 个无符号字节元素)。假设两个向量的所有值都是 255。
在这种情况下,我们应该期待什么结果?一个 8 元素向量 (510,...510) 还是其他?
【问题讨论】:
【参考方案1】:8 位元素的值只能是 0 到 255。它不能包含 510。
vadd_u8 将环绕 => 255 + 255 = 510 % 256 = 254。
vqadd_u8 将饱和 => 255 + 255 = min(510, 255) = 255。
【讨论】:
那么我们如何使用 Neon 内在函数添加 2 个 uint8x8 向量? AFAIK,没有允许添加 2 个 uint8x8 向量的方法,这些向量给出 uint16x8 结果。参考:gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.htmlvaddl_u8
将添加两个uint8x8
并返回一个uint16x8
。以上是关于NEON 如何处理溢出?的主要内容,如果未能解决你的问题,请参考以下文章
prometheus:prometheus如何处理数据类型溢出?