小编OC8*_*C87的帖子

SIMD 将 12 位字段解包为 16 位

我需要从每个 24 位输入中解压缩两个 16 位值。(3 字节 -> 4 字节)。我已经按照 na\xc3\xafve 的方式做到了,但我对性能不满意。

\n

例如,InBuffer 是__m128i

\n
value1 = (uint16_t)InBuffer[0:11]        // bit-ranges\nvalue2 = (uint16_t)InBuffer[12:24]\n\nvalue3 = (uint16_t)InBuffer[25:36] \nvalue4 = (uint16_t)InBuffer[37:48]\n... for all the 128 bits.\n
Run Code Online (Sandbox Code Playgroud)\n

解包后,值应存储在 __m256i 变量中。

\n

我该如何使用 AVX2 解决这个问题?可能使用解包/洗牌/排列内在函数?

\n

c avx pixelformat bit-fields avx2

3
推荐指数
1
解决办法
1332
查看次数

标签 统计

avx ×1

avx2 ×1

bit-fields ×1

c ×1

pixelformat ×1