Я ищу более компактный способ извлечения последовательного <4 x float>
(например, xmm0
) из <8 x float>
(например, ymm0
) регистра, который в конечном итоге будет использовать именование векторной ширины SIMD.
Это работает, как ожидалось, но довольно сложно:
%out.1 = extractelement <8 x float> %out.0, i32 0
%out.2 = extractelement <8 x float> %out.0, i32 1
%out.3 = extractelement <8 x float> %out.0, i32 2
%out.4 = extractelement <8 x float> %out.0, i32 3
%out.5 = insertelement <4 x float> undef, float %out.1, i32 0
%out.6 = insertelement <4 x float> %out.5, float %out.2, i32 1
%out.7 = insertelement <4 x float> %out.6, float %out.3, i32 2
%out.8 = insertelement <4 x float> %out.7, float %out.4, i32 3
Есть ли более тонкий способ сделать то же самое?