小编jia*_*ang的帖子

AVX2字节用uint16索引收集到__m256i中

我试图从数组中包装一个带有32个字符的__m256i变量,并由indices指定.这是我的代码:

char array[];         // different array every time.
uint16_t offset[32];  // same offset reused many times


_mm256_set_epi8(array[offset[0]], array[offset[1]], array[offset[2]], array[offset[3]], array[offset[4]], array[offset[5]], array[offset[6]], array[offset[7]],
      array[offset[8]],array[offset[9]],array[offset[10]],array[offset[11]], array[offset[12]], array[offset[13]], array[offset[14]], array[offset[15]], 
      array[offset[16]],array[offset[17]], array[offset[18]], array[offset[19]], array[offset[20]], array[offset[21]], array[offset[22]], array[offset[23]], 
      array[offset[24]],array[offset[25]],array[offset[26]], array[offset[27]], array[offset[28]], array[offset[29]], array[offset[30]],array[offset[31]])
Run Code Online (Sandbox Code Playgroud)

使用相同的偏移和不同的数组将多次调用此函数.但根据我的测试,我不认为它是最佳的.有什么想法改进吗?

c intrinsics pack avx avx2

6
推荐指数
1
解决办法
292
查看次数

使用SIMD提取位

我想从寄存器变量中提取8位,__mm256i src其中8位由另一个指定,__mm256i offset由8个整数组成.例如:如果offset[1,3,5,21,100,200,201,202],我想从第1,第3,第5,第100,第200,第201,第202位获取src并将它们打包到a int8.

这个问题类似于使用位操作提取位,但我想要一个带有SIMD指令的解决方案,因为它要快得多.

x86 bit-manipulation simd intrinsics avx2

5
推荐指数
1
解决办法
651
查看次数

标签 统计

avx2 ×2

intrinsics ×2

avx ×1

bit-manipulation ×1

c ×1

pack ×1

simd ×1

x86 ×1