1
16
在AVX-512之前,确实不可能直接进行无符号比较 1. . 但您可以在每个值上加-128(或减去128,或XOR 0x80,或类似的值)。这将把0变成-128,把255变成127,把其他值变成介于两者之间的值;结果是你从比较中得到了正确的结果。 将其扩展到单词也应该有效,但听起来有点慢,因为每个指令要完成一半的工作。
脚注1:使用AVX-512BW:
|
2
5
无符号比较(a>=b)与maxu(a, 这样你就可以使用
如果您需要
|
3
2
对@greggos解决方案提出了一个小但重要的增强: 这个
有一个缺点,因为您必须在maxu比较之前备份a,从而导致一个补充操作,类似于:
这个
给出了完全相同的效果,但保留了用于相等性检查的运算符:
收益是显著的:只有2次操作,而不是3次。 |
4
1
在压缩的无符号字节中进行比较是不可能的,我已经将字节解压缩为字(因为它们是可能的,这就像从无符号到有符号的转换,以及从字节到字的扩展),并使用PCMPGTB进行比较。 |
Dave · 3D矢量的SSE对齐 8 年前 |
Green goblin · 乱序16位矢量SSE 8 年前 |
John · 两个8位阵列协方差的快速实现 8 年前 |
Rames · XMM寄存器的位取反 8 年前 |
ishaan arora · 在C中将代码从SSE2转换为SSE4 9 年前 |
warunapww Krishna · PADDD指令的操作数 9 年前 |
Thomas · FMA指令集的硬件支持有多丰富 9 年前 |
user1095108 · 向量*矩阵产品效率问题 10 年前 |