Как получить данные из регистров AVX?C++

Программы на C++. Форум разработчиков
Anonymous
Как получить данные из регистров AVX?

Сообщение Anonymous »

Используя MSVC 2013 и AVX 1, у меня есть 8 поплавок в регистре: < /p>

Код: Выделить всё

__m256 foo = mm256_fmadd_ps(a,b,c);
< /code>

Теперь я хочу вызвать inline void print (float) {...} < /code> для всех 8 поплавок. Похоже, что Intel < /em> AVX Innsicics сделает это довольно сложным: < /p>

print(_castu32_f32(_mm256_extract_epi32(foo, 0)));
print(_castu32_f32(_mm256_extract_epi32(foo, 1)));
print(_castu32_f32(_mm256_extract_epi32(foo, 2)));
// ...
< /code>

Но MSVC даже не имеет ни одной из этих двух внутренней. Конечно, я мог бы написать значения в память и загрузку оттуда, но я подозреваю, что на уровне сборки нет необходимости пропускать регистр.for(int i = 0; i !=8; ++i)
print(_castu32_f32(_mm256_extract_epi32(foo, i)))
< /code>

Но MSVC не понимает, что многие внутренние  требуют < /em> цикла разворота. Как написать цикл по плаванию 8x32 в __m256 foo 
?

Подробнее здесь: https://stackoverflow.com/questions/376 ... -registers

Вернуться в «C++»