上AXV512DQ
,有_mm_cvttpd_epi64
,例如在avx512vldqintrin.h
我们找到的文件中
static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvttpd_epi64 (__m128d __A) {
return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
(__v2di) _mm_setzero_si128(),
(__mmask8) -1);
}
它将两个压缩的 64 位浮点数 ( __m128d
) 转换为两个压缩的 64 位整数 ( __m128i
)。还_mm256_cvttpd_epi64
可以将四个压缩的 64 位浮点数 ( __m256d
) 转换为四个压缩的 64 位整数 ( __m256i
)。
但是,很多机器不支持AXV512DQ
. 所以我想知道穷人的最佳选择是什么。
我应该说我已经对仅适用于 64 位浮点数的解决方案感到满意,该解决方案可以无损转换为 32 位浮点数。