我正在寻找最有效的方法来将两个对齐的 int16_t 数组相乘,其长度可以用 AVX2 除以 16。
在乘以一个向量后x
,我从 开始,_mm256_extracti128_si256
得到_mm256_castsi256_si128
的低部分和高部分,x
然后将它们与_mm_add_epi16
.
我复制了结果寄存器并应用于_mm_move_epi64
原始寄存器并再次添加了两者_mm_add_epi16
。现在,我认为我有:
-, -, -, -, x15+x7+x11+x3, x14+x6+x10+x2, x13+x5+x9+x1, x12+x4+x8+x0
在 128 位寄存器内。但是现在我被卡住了,不知道如何有效地总结剩余的四个条目以及如何提取 16 位结果。