¿Cómo obtener datos de los registros AVX?

Usando MSVC 2013 y AVX 1, tengo 8 flotantes en un registro:

__m256 foo = mm256_fmadd_ps(a,b,c);

Ahora quiero llamarinline void print(float) {...} para las 8 carrozas. Parece que elIntel Lo intrínseco de AVX haría esto bastante complicado:

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

pero MSVC ni siquiera tiene ninguno de estos dos intrínsecos. Claro, podría volver a escribir los valores en la memoria y cargar desde allí, pero sospecho que a nivel de ensamblaje no hay necesidad de derramar un registro.

Bonus Q: Por supuesto, me gustaría escribir

for(int i = 0; i !=8; ++i) 
    print(_castu32_f32(_mm256_extract_epi32(foo, i)))

pero MSVC no entiende que muchos intrínsecosexigir bucle desenrollado. ¿Cómo escribo un bucle sobre los flotadores de 8x32 en__m256 foo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta