Я портирую код SSE SIMD для использования 256-битных расширений AVX и не могу найти никаких инструкций, которые будут смешивать / перемешивать / перемещать высокие 128 бит и младшие 128 бит.
Сюжетная история:
Я действительно хочу, чтобы _1 _ / _ 2_ действовал как _3 _ / _ 4_, только с 256-битными словами. К сожалению, он действует как два вызова HADDPS
, действующих независимо на младшие и высокие слова.
vextractf128
, который везде работает быстро (особенно Zen1), сужаясь до 128-битных векторов. Как суммировать __m256 по горизонтали?. Но вы бы не хотели, чтобыhaddps
был частью эффективной горизонтальной суммы в первую очередь, так что, надеюсь, это не то, что вы делали ... Если вам не нужно было делать несколько hsums, тогда да, vhaddps может быть полезен, как в Intel AVX: 256-битная версия скалярного произведения для переменных с плавающей запятой двойной точности. А может 2x vperm2f128 + vaddps - person Peter Cordes   schedule 17.11.2020