gpt4 book ai didi

c - 16 位寄存器的 SSE 无符号/有符号减法

转载 作者:行者123 更新时间:2023-12-02 05:25:26 25 4
gpt4 key购买 nike

我有一个 __m128i 寄存器( vector A),其 16 位值的内容为:

{100,26,26,26,26,26,26,100} // A Vector

现在我减去 vector

{82,82,82,82,82,82,82,82}

按照说明

_mm_sub_epi16(a_vec,_mm_set1_epi16(82)) 

预期的结果应该是下面的 vector

{18,-56,-56,-56,-56,-56,-56,18}

但是我明白了

{18,65480,65480,65480,65480,65480,65480,18}

如何解决 vector 被视为已签名的问题?

A Vector 是由这条指令创建的:

__m128i a_vec = _mm_srli_epi16(_mm_unpacklo_epi8(score_vec_8bit, score_vec_8bit), 8)

最佳答案

65480-56 的值相同(它们在寄存器级别都是 0xffc8)- 你只是 显示它就好像它是一个未签名的 short。

请注意,对于没有进位/借位标志的二进制值的非饱和加法和减法,值是有符号还是无符号实际上是无关紧要的 - 因此相同的指令可用于添加有符号和无符号的短裤 - 唯一的区别是您随后解释(或显示)结果的方式。

关于c - 16 位寄存器的 SSE 无符号/有符号减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com