相关疑难解决方法(0)

使用AVX模拟32字节的移位

我正在将使用SSE2内在函数编写的矢量化代码迁移到AVX2内在函数.

令我失望的是,我发现移位指令_mm256_slli_si256_mm256_srli_si256仅分别在AVX寄存器的两半上运行,并且在它们之间引入了零.(这与处理整个SSE寄存器的_mm_slli_si128_mm_srli_si128相反.)

你能推荐我一个简短的替代品吗?

更新:

_mm256_slli_si256 有效地实现了

_mm256_alignr_epi8(A, _mm256_permute2x128_si256(A, A, _MM_SHUFFLE(0, 0, 3, 0)), N)

要么

_mm256_slli_si256(_mm256_permute2x128_si256(A, A, _MM_SHUFFLE(0, 0, 3, 0)), N)

对于大于16字节的移位.

但问题仍然存在_mm256_srli_si256.

c++ simd intrinsics sse2 avx2

11
推荐指数
2
解决办法
2881
查看次数

标签 统计

avx2 ×1

c++ ×1

intrinsics ×1

simd ×1

sse2 ×1