我正在查看AVX指令指南,虽然有32位整数值的加载,存储和置换操作,但其他操作(如确定最小值或最大值)或随机播放操作仅适用于浮点数和双精度数。 / p>
所以,如果我想将这些操作用于32位整数,我是否需要将它强制转换为浮点数,然后对其进行类型转换或者是否存在其他一些我缺失的指令?
另外,如果我想在32位整数上使用它,那么shuffle掩码是否保持相同,就像浮点数一样?
答案 0 :(得分:2)
32B向量的大部分整数运算都在AVX2扩展中(不是初始AVX扩展,几乎完全是浮点运算)。英特尔最新的AVX Programming Reference有完整的细节;您可能还想看看英特尔blog post宣布的一些细节。
不幸的是,您无法使用浮点最小或最大操作来模拟对整数数据的这些操作,因为当解释为浮点数据时,大量整数映射到NaN值,并且NaN比较的语义不是做你想要进行整数比较的东西(你还需要处理浮点编码是符号幅度的事实,所以负值的排序是“反转的”,而且+ 0和-0比较相等)