https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81389
--- Comment #12 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to rockeet from comment #11) > @H.J. Lu > > Have you tried your `solution`? > > `_mm_cmpestri` is a C function and have no overloaded with type `__m128i_u`. [hjl@gnu-tools-1 pr81389]$ cat y.c #include <nmmintrin.h> #include <stdio.h> int main(int argc, char* argv[]) { __m128i key128 = { ':' }; const char data[] = "___0123456789:_:abcdefghijklmn"; const char* ptr = argc < 100 ? data : argv[1]; int idx = _mm_cmpestri(key128, 1, *(const __m128i_u*)(ptr+3), 16, // don't require memory align _SIDD_UBYTE_OPS|_SIDD_CMP_EQUAL_ORDERED|_SIDD_LEAST_SIGNIFICANT); printf("%zd\n", idx); return 0; } [hjl@gnu-tools-1 pr81389]$ gcc -O0 -msse4 y.c [hjl@gnu-tools-1 pr81389]$ ./a.out 10 [hjl@gnu-tools-1 pr81389]$