NEON 如何处理溢出?

1 arm overflow neon

我想知道 Neon 如何处理溢出。例如:

uint8x8_t vadd_u8 (uint8x8_t, uint8x8_t)
Run Code Online (Sandbox Code Playgroud)

据我了解,这是 2 个向量的加法(每个向量有 8 个无符号字节元素)。假设两个向量的所有值都是 255。

在这种情况下我们应该期待什么结果?8 元素向量 (510,...510) 还是其他向量?

Mār*_*iko 5

8 位元素的值只能是 0 到 255。它不能包含 510。

vadd_u8 将环绕 => 255 + 255 = 510 % 256 = 254。

vqadd_u8 将饱和 => 255 + 255 = min(510, 255) = 255。

  • `vaddl_u8` 将添加两个 `uint8x8` 并返回一个 `uint16x8`。 (3认同)