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]$

Reply via email to