Как получить данные из регистров 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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