能否用AVX-512实现uint64_t向量乘法?缺失指令的原因是什么?
能否用AVX-512实现两个uint64_t向量的乘法?
根据Intel官方文档,目前存在以下整数向量乘法指令:
PMULDQ(压缩双字整数乘法):仅支持有符号整数PMULHRSW(带舍入和缩放的压缩高位乘法):仅支持有符号整数PMULHUW(压缩无符号整数乘法并存储高位结果):仅存储高位结果,不保留低位PMULHW(压缩有符号整数乘法并存储高位结果):仅存储高位结果,不保留低位PMULLD/PMULLQ(压缩整数乘法并存储低位结果):仅支持有符号整数PMULLW(压缩有符号整数乘法并存储低位结果):仅支持有符号整数PMULUDQ(压缩无符号双字整数乘法):仅支持双字值,不支持四字值
看起来似乎没有单条AVX-512指令可实现两个uint64_t向量的乘法并得到低位结果,这令人意外。事实果真如此吗?若是,该指令缺失的原因是什么?
之前找到的两篇讨论内容——《使用AVX2和AVX-512实现64位整数乘法的性能》、《最快的int64_t数组乘法方法?》都仅聚焦有符号整数,无法解答这个问题。
内容的提问来源于stack exchange,提问作者Litherum
相关产品推荐
相关产品推荐

