gpt4 book ai didi

c++ - 上证4.2 : alternative to _mm_cmpistri

转载 作者:行者123 更新时间:2023-11-30 04:06:09 27 4
gpt4 key购买 nike

我编写了一个运行 _mm_cmpistri 的程序来获取下一个\n(换行符)字符。虽然这在我的计算机上运行良好,但由于缺少 SSE 4.2 支持,它在服务器上失败了。

是否有使用 SSE 命令 <= SSE 4.1 的好的替代方案?

问候

最佳答案

好的,这是实际的代码。这还没有经过测试,只是给你一个想法。

__m128i lf = _mm_set1_epi8('\n');
// unaligned part
__m128i data = _mm_loadu_si128((__m128i *)ptr);
int mask = _mm_movemask_epi8(_mm_cmpeq_epi8(data, lf));
if (mask != 0)
return ffs(mask);
int index = 16 - ((size_t)ptr & 15);
// aligned part, possibly overlaps unaligned part but that's ok
for (; index < length; index += 16) {
data = _mm_load_si128((__m128i *)(ptr + index));
mask = _mm_movemask_epi8(_mm_cmpeq_epi8(data, lf));
if (mask != 0)
return index + ffs(mask);
}

对于 MSVC,ffs 可以根据 _BitScanForward 定义。

关于c++ - 上证4.2 : alternative to _mm_cmpistri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22999065/

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