我正在将SSE SIMD代码移植为使用256位AVX扩展,并且似乎找不到可以混合/洗牌/移动高128位和低128位的任何指令。
背景故事:
我真正想要的是
背景故事:
我真正想要的是
VHADDPS
/ _mm256_hadd_ps
像HADDPS
/_mm_hadd_ps
一样工作,只是用256位字。不幸的是,它的行为类似于对低字和高字分别独立调用两次HADDPS
。
vextractf128
,它在任何地方(特别是Zen1)都很快,缩小到128位向量。如何水平求和__m256?。但是,您不希望haddps
成为高效水平求和的一部分,所以希望这不是您要做的...除非您有多个hsums要执行,那么是的,vhaddps可以像Intel AVX:双精度浮点变量的256位版本点积中那样有用。也许还有2x vperm2f128 + vaddps。 - Peter Cordes