0

我正在尝试构建一个具有快速处理的标头解析器。我有两个问题,一个是下面的代码中有一个错误。

void parse_with_simd(const char *buffer, const int buffer_len) {
  const char * value = "GET ";
  __m128i u_str = _mm_loadu_si128((const __m128i *)value);
  __m128i loaded = _mm_loadu_si128((const __m128i *)buffer);
  int not_equal = _mm_cmpestrc(loaded, 4, u_str, 4,
                               _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH);
  debug_print("has value %d\n", not_equal);

这就是我所拥有的,debug_print正在输出not_equal = 1

这是我的测试用例。

#include "../src/header/header.h"

int main() {
  parse_with_simd("GET / HTTP/1.1", 14);
  parse_with_simd("OPTIONS /",9);
}

两个字符串都显示 not_equal 为 1。

4

0 回答 0