小编max*_*vic的帖子

NEON 上的 _mm_cmpestri 指令替代方案

我正在尝试在 ARM 平台上运行PicoHTTPParser 。有一个函数使用 SSE 指令_mm_cmpestri进行快速字符比较。NEON 有替代方案吗?看来我必须使用类似VCGT.U8 的东西,但它看起来不是很有效。

static const char *findchar_fast(const char *buf, const char *buf_end, const char *ranges, size_t ranges_size, int *found)
{
    *found = 0;
    #if __SSE4_2__
    if (likely(buf_end - buf >= 16)) {
        __m128i ranges16 = _mm_loadu_si128((const __m128i *)ranges);

        size_t left = (buf_end - buf) & ~15;
        do {
            __m128i b16 = _mm_loadu_si128((const __m128i*)buf);
            int r = _mm_cmpestri(ranges16, ranges_size, b16, 16, _SIDD_LEAST_SIGNIFICANT | _SIDD_CMP_RANGES | _SIDD_UBYTE_OPS);
            if (unlikely(r != 16)) …
Run Code Online (Sandbox Code Playgroud)

c performance string-comparison neon

6
推荐指数
0
解决办法
199
查看次数

标签 统计

c ×1

neon ×1

performance ×1

string-comparison ×1