Два связанных вопроса.
Это то, что мой код должен делать с довольно большим объемом данных. Это делается внутри внутренних циклов, и производительность важна.
- Преобразуйте массив __int32 в двойные (или преобразуйте __m128i в два __m128d).
- Преобразуйте и массив чисел с плавающей запятой в числа типа double (или конвертируйте __m128 в два __m128d).
В принципе, мне нужна функция со следующими подписями:
void convert_int_to_double(__int32 const * input, double * output);
void convert_float_to_double(float const * input, double * output);
Указатели ввода и вывода выровнены, а количество элементов кратно 4. Основная проблема состоит в том, как быстро распаковать __m128 на два __m128d.
double
заранее за линейное время, используйтеdouble
исключительно внутри вложенных циклов (без необходимости преобразования) и затем конвертируйте в тип результата, снова за линейное время. - person Ben Voigt   schedule 13.12.2010