Предполагая, что у меня есть SSE к SSE4.1, но не AVX (2), что это самый быстрый способ загрузить упакованный макет памяти, как это (все 32-разрядные целые):Каков самый быстрый способ сделать SIMD-сбор без AVX (2)?
a0 b0 c0 d0 a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3
В четырех векторов a, b, c, d
?
a: {a0, a1, a2, a3}
b: {b0, b1, b2, b3}
c: {c0, c1, c2, c3}
d: {d0, d1, d2, d3}
Я не уверен, является ли это отношение или нет, но в моем фактическом применении у меня есть 16 векторов и, как таковые a0
и a1
16 * 4 байта друг от друга в памяти.
Возможно, вы пропустили предложение по моему вопросу о наличии 16 векторов вместо 4. Должен ли я использовать как 4 транспозиции? – orlp
Действительно - не зная, что вы планируете делать со всеми этими векторами, сложно дать полное решение, но да, вы можете просто повторить вышеуказанные шаги для остальных 12 векторов в группах по 4. –