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