gpt4 book ai didi

x86 - 如何从 16 x 8 位 __m128i 值中提取 32 x 4 位整数

转载 作者:行者123 更新时间:2023-12-02 02:10:53 25 4
gpt4 key购买 nike

假设我有这行代码,它使用 SSE2 加载 16 x 8 位无符号整数

// ptr is a pointer to uint8_t array
__m128i b = _mm_load_si128((const __m128i*) ptr);

我想将b中的每个8位无符号整数(总共16个)拆分为4位高位和4位低位部分。我怎样才能做到这一点?

最佳答案

您需要遮盖下部并将上部移动到正确的位置。由于没有字节移位SSE指令,因此移位后还需要屏蔽上半部分。

__m128i b =  _mm_load_si128((const __m128i*) ptr);
__m128i mask = _mm_set1_epi8(0xf);
__m128i lower = _mm_and_si128(b, mask);
__m128i upper = _mm_and_si128(_mm_srli_epi16(b, 4), mask);

关于x86 - 如何从 16 x 8 位 __m128i 值中提取 32 x 4 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12795462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com