Умножение разных типов в AVX512

В настоящее время я пытаюсь умножить значение __m512d на значение __m512i. Значение __m512d равно ln(2), поэтому результат сохраняется в другой переменной __m512d. Однако я не могу найти какие-либо встроенные функции для умножения двойного числа на целое число в avx512. Когда я использую встроенную функцию _mm512_castsi512_pd для __m512i, я получаю неправильное значение, поэтому я думаю, что встроенная функция также не очень помогает.

Я рад за любую помощь или обходной путь. Заранее спасибо.


person Luca Knaack    schedule 29.11.2020    source источник
comment
Вы хотите конвертировать, а не бросать. SIMD-приведения просто переинтерпретируют битовый шаблон.   -  person Peter Cordes    schedule 29.11.2020


Ответы (1)


Спасибо @Peter Cordes за указание на ошибку, касающуюся разницы между кастингом и преобразованием. Следующий код разрешает умножение:

__m512d a;
__m512i b;
_mm512_muld_pd(a,_mm512_cvtepi64_pd(b));
person Luca Knaack    schedule 29.11.2020