在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);
}
Run Code Online (Sandbox Code Playgroud)
它将两个打包的64位浮点数(__m128d)转换为两个打包的64位整数(__m128i).还有_mm256_cvttpd_epi64用于将四个打包的64位浮点数(__m256d)转换为四个打包的64位整数(__m256i).
但是,很多机器都不支持AXV512DQ.所以我想知道一个穷人的最佳选择是什么.
我应该说我已经满意的解决方案仅适用于64位浮点数,可以无损转换为32位浮点数.