На 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-разрядные операции.
Задача ещё не решена.
Других решений пока нет …