diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-10-30 16:38:15 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-10-30 16:38:15 +0100 |
| commit | cb2a623faa78b02b93b402f665030f6b75cdf0a9 (patch) | |
| tree | 6b376883dc43953b876c2fd8fa12fce94b29eb1e | |
| parent | 7e80e7ba86c51487e71e95d52fb72f45c94030ba (diff) | |
| download | box64-cb2a623faa78b02b93b402f665030f6b75cdf0a9.tar.gz box64-cb2a623faa78b02b93b402f665030f6b75cdf0a9.zip | |
Added full SSE 4.2 support
| -rw-r--r-- | CMakeLists.txt | 6 | ||||
| -rw-r--r-- | src/emu/x64compstrings.c | 120 | ||||
| -rw-r--r-- | src/emu/x64compstrings.h | 13 | ||||
| -rw-r--r-- | src/emu/x64run660f.c | 60 | ||||
| -rw-r--r-- | src/emu/x64run670f.c | 1 | ||||
| -rw-r--r-- | src/emu/x64runf20f.c | 38 | ||||
| -rw-r--r-- | src/tools/my_cpuid.c | 3 | ||||
| -rw-r--r-- | src/wrapped/wrappedlibc.c | 2 | ||||
| -rw-r--r-- | tests/ref27.txt | 865 | ||||
| -rwxr-xr-x | tests/test27 | bin | 0 -> 215616 bytes | |||
| -rw-r--r-- | tests/test27.c | 111 |
11 files changed, 1218 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 3468ff9e..d0df0249 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -297,6 +297,7 @@ set(ELFLOADER_SRC "${BOX64_ROOT}/src/elfs/elfloader.c" "${BOX64_ROOT}/src/elfs/elfparser.c" "${BOX64_ROOT}/src/elfs/elfload_dump.c" + "${BOX64_ROOT}/src/emu/x64compstrings.c" "${BOX64_ROOT}/src/emu/x64emu.c" "${BOX64_ROOT}/src/emu/x64int3.c" "${BOX64_ROOT}/src/emu/x87emu_private.c" @@ -1017,6 +1018,11 @@ add_test(feround ${CMAKE_COMMAND} -D TEST_PROGRAM=${CMAKE_BINARY_DIR}/${BOX64} -D TEST_REFERENCE=${CMAKE_SOURCE_DIR}/tests/ref26.txt -P ${CMAKE_SOURCE_DIR}/runTest.cmake ) +add_test(sse4_2 ${CMAKE_COMMAND} -D TEST_PROGRAM=${CMAKE_BINARY_DIR}/${BOX64} + -D TEST_ARGS=${CMAKE_SOURCE_DIR}/tests/test27 -D TEST_OUTPUT=tmpfile27.txt + -D TEST_REFERENCE=${CMAKE_SOURCE_DIR}/tests/ref27.txt + -P ${CMAKE_SOURCE_DIR}/runTest.cmake ) + set_tests_properties(feround PROPERTIES ENVIRONMENT "BOX64_SYNC_ROUNDING=1") file(GLOB extension_tests "${CMAKE_SOURCE_DIR}/tests/extensions/*.c") diff --git a/src/emu/x64compstrings.c b/src/emu/x64compstrings.c new file mode 100644 index 00000000..72781ebb --- /dev/null +++ b/src/emu/x64compstrings.c @@ -0,0 +1,120 @@ +#include <stdint.h> + +#include "box64stack.h" +#include "x64emu.h" +#include "x64run_private.h" +#include "x64emu_private.h" +#include "x64compstrings.h" + +static int overrideIfDataInvalid(sse_regs_t* mem, int lmem, sse_regs_t* reg, int lreg, int j, int i, int imm8) +{ + int valid1 = (i<lreg); + int valid2 = (j<lmem); + if(!valid1 && !valid2) + switch((imm8>>2)&3) { + case 0b00: + case 0b01: return 0; + case 0b10: + case 0b11: return 1; + } + if(!valid1 && valid2) + switch((imm8>>2)&3) { + case 0b00: + case 0b01: + case 0b10: return 0; + case 0b11: return 1; + } + if(valid1 && !valid2) + return 0; + switch((imm8>>2)&3) { + case 0b01: // range + switch (imm8&3) { + case 0b00: // ub + return (i&1)?((reg->ub[i]>=mem->ub[j])):((reg->ub[i]<=mem->ub[j])); + case 0b01: // uw + return (i&1)?((reg->uw[i]>=mem->uw[j])):((reg->uw[i]<=mem->uw[j])); + case 0b10: // sb + return (i&1)?((reg->sb[i]>=mem->sb[j])):((reg->sb[i]<=mem->sb[j])); + case 0b11: // sw + return (i&1)?((reg->sw[i]>=mem->sw[j])):((reg->sw[i]<=mem->sw[j])); + } + break; + default: // the others + switch (imm8&1) { + case 0: // byte + return (reg->ub[i] == mem->ub[j]); + case 1: // word + return (reg->uw[i] == mem->uw[j]); + } + } +} + +uint32_t sse42_compare_string_explicit_len(x64emu_t* emu, sse_regs_t* mem, int lmem, sse_regs_t* reg, int lreg, uint8_t imm8) +{ + // get number of packed byte/word + int n_packed = (imm8&1)?8:16; + if(lreg<0) lreg = -lreg; + if(lmem<0) lmem = -lmem; + if(lreg>n_packed) lreg = n_packed; + if(lmem>n_packed) lmem = n_packed; + // aggregate to intres1 + uint32_t intres1 = 0; + switch((imm8>>2)&3) { + case 0b00: //Equal any + for(int j=0; j<n_packed; ++j) + for(int i=0; i<n_packed; ++i) { + intres1 |= overrideIfDataInvalid(mem, lmem, reg, lreg, j, i, imm8)<<j; + } + break; + case 0b01: // Range + for(int j=0; j<n_packed; ++j) + for(int i=0; i<n_packed; i+=2) { + intres1 |= (overrideIfDataInvalid(mem, lmem, reg, lreg, j, i, imm8) & overrideIfDataInvalid(mem, lmem, reg, lreg, j, i+1, imm8))<<j; + } + break; + case 0b10: // Equal each + for(int i=0; i<n_packed; ++i) { + intres1 |= overrideIfDataInvalid(mem, lmem, reg, lreg, i, i, imm8)<<i; + } + break; + case 0b11: // Equal ordered + intres1 = (1<<n_packed)-1; + for(int j=0; j<n_packed; ++j) + for(int i=0; i<n_packed-j; ++i) { + int k = i+j; + intres1 &= (((1<<n_packed)-1)^(1<<j)) | overrideIfDataInvalid(mem, lmem, reg, lreg, k, i, imm8)<<j; + } + break; + } + // build intres2 + uint32_t intres2 = intres1; + switch((imm8>>4)&3) { + case 0b01: intres2 ^= ((1<<n_packed)-1); + case 0b11: intres2 ^= ((1<<lmem)-1); + } + // and now set the flags + RESET_FLAGS(emu); + CONDITIONAL_SET_FLAG(intres2, F_CF); + CONDITIONAL_SET_FLAG(lmem<n_packed, F_ZF); + CONDITIONAL_SET_FLAG(lreg<n_packed, F_SF); + CONDITIONAL_SET_FLAG(intres2&1, F_OF); + CLEAR_FLAG(F_AF); + CLEAR_FLAG(F_PF); + + return intres2; +} + +uint32_t sse42_compare_string_implicit_len(x64emu_t* emu, sse_regs_t* mem, sse_regs_t* reg, uint8_t imm8) +{ + int lmem = 0; + int lreg = 0; + // get lmem and lreg + if(imm8&1) { + while(lmem<8 && mem->uw[lmem]) ++lmem; + while(lreg<8 && reg->uw[lreg]) ++lreg; + } else { + while(lmem<16 && mem->ub[lmem]) ++lmem; + while(lreg<16 && reg->ub[lreg]) ++lreg; + } + return sse42_compare_string_explicit_len(emu, mem, lmem, reg, lreg, imm8); +} \ No newline at end of file diff --git a/src/emu/x64compstrings.h b/src/emu/x64compstrings.h new file mode 100644 index 00000000..b2a785b2 --- /dev/null +++ b/src/emu/x64compstrings.h @@ -0,0 +1,13 @@ +#ifndef __X64_CMPSTRINGS_H__ +#define __X64_CMPSTRINGS_H__ + +#include <stdint.h> + +#include "regs.h" + +typedef struct x64emu_s x64emu_t; + +uint32_t sse42_compare_string_explicit_len(x64emu_t* emu, sse_regs_t* a, int la, sse_regs_t* b, int lb, uint8_t imm8); +uint32_t sse42_compare_string_implicit_len(x64emu_t* emu, sse_regs_t* a, sse_regs_t* b, uint8_t imm8); + +#endif //__X64_CMPSTRINGS_H__ \ No newline at end of file diff --git a/src/emu/x64run660f.c b/src/emu/x64run660f.c index 9b969c83..72180c0c 100644 --- a/src/emu/x64run660f.c +++ b/src/emu/x64run660f.c @@ -22,6 +22,7 @@ #include "bridge.h" #include "modrm.h" +#include "x64compstrings.h" static uint8_t ff_mult(uint8_t a, uint8_t b) { @@ -1118,6 +1119,65 @@ uintptr_t Run660F(x64emu_t *emu, rex_t rex, uintptr_t addr) } break; + case 0x60: /* PCMPESTRM */ + nextop = F8; + GETEX(1); + GETGX; + tmp8u = F8; + tmp32u = sse42_compare_string_explicit_len(emu, EX, R_EDX, GX, R_EAX, tmp8u); + if(tmp8u&0b1000000) { + switch(tmp8u&1) { + case 0: for(int i=0; i<16; ++i) GX->ub[i] = ((tmp32u>>i)&1)?0xff:0x00; break; + case 1: for(int i=0; i<8; ++i) GX->uw[i] = ((tmp32u>>i)&1)?0xffff:0x0000; break; + } + } else { + GX->q[1] = GX->q[0] = 0; + GX->uw[0] = tmp32u; + } + break; + case 0x61: /* PCMPESTRI */ + nextop = F8; + GETEX(1); + GETGX; + tmp8u = F8; + tmp32u = sse42_compare_string_explicit_len(emu, EX, R_EDX, GX, R_EAX, tmp8u); + if(!tmp32u) + R_RCX = (tmp8u&1)?8:16; + else if(tmp8u&0b1000000) + R_RCX = 31-__builtin_clz(tmp32u); + else + R_RCX = __builtin_ffs(tmp32u) - 1; + break; + case 0x62: /* PCMPESTRM */ + nextop = F8; + GETEX(1); + GETGX; + tmp8u = F8; + tmp32u = sse42_compare_string_implicit_len(emu, EX, GX, tmp8u); + if(tmp8u&0b1000000) { + switch(tmp8u&1) { + case 0: for(int i=0; i<16; ++i) GX->ub[i] = ((tmp32u>>i)&1)?0xff:0x00; break; + case 1: for(int i=0; i<8; ++i) GX->uw[i] = ((tmp32u>>i)&1)?0xffff:0x0000; break; + } + } else { + GX->q[1] = GX->q[0] = 0; + GX->uw[0] = tmp32u; + } + break; + case 0x63: /* PCMPISTRI */ + nextop = F8; + GETEX(1); + GETGX; + tmp8u = F8; + tmp32u = sse42_compare_string_implicit_len(emu, EX, GX, tmp8u); + if(!tmp32u) + R_RCX = (tmp8u&1)?8:16; + else if(tmp8u&0b1000000) + R_RCX = 31-__builtin_clz(tmp32u); + else + R_RCX = __builtin_ffs(tmp32u) - 1; + break; + case 0xDF: // AESKEYGENASSIST Gx, Ex, u8 nextop = F8; GETEX(1); diff --git a/src/emu/x64run670f.c b/src/emu/x64run670f.c index 015b3712..2f94bd33 100644 --- a/src/emu/x64run670f.c +++ b/src/emu/x64run670f.c @@ -25,6 +25,7 @@ #endif #include "modrm.h" +#include "x64compstrings.h" #ifdef TEST_INTERPRETER uintptr_t Test670F(x64test_t *test, rex_t rex, int rep, uintptr_t addr) diff --git a/src/emu/x64runf20f.c b/src/emu/x64runf20f.c index d5ce598f..020a896a 100644 --- a/src/emu/x64runf20f.c +++ b/src/emu/x64runf20f.c @@ -156,6 +156,44 @@ uintptr_t RunF20F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step) GD->dword[1] = 0; } break; + + case 0x38: // more opcodes + opcode = F8; + switch(opcode) { + + case 0xF0: // CRC32 Gd, Eb + nextop = F8; + GETEB(0); + GETGD; + GD->dword[0] ^= EB->byte[0]; + for (int i = 0; i < 8; i++) { + if (GD->dword[0] & 1) + GD->dword[0] = (GD->dword[0] >> 1) ^ 0x82f63b78; + else + GD->dword[0] = (GD->dword[0] >> 1); + } + GD->dword[1] = 0; + break; + case 0xF1: // CRC32 Gd, Ed + nextop = F8; + GETED(0); + GETGD; + for(int j=0; j<4*(rex.w+1); ++j) { + GD->dword[0] ^= ED->byte[j]; + for (int i = 0; i < 8; i++) { + if (GD->dword[0] & 1) + GD->dword[0] = (GD->dword[0] >> 1) ^ 0x82f63b78; + else + GD->dword[0] = (GD->dword[0] >> 1); + } + } + GD->dword[1] = 0; + break; + + default: + return 0; + } + break; case 0x51: /* SQRTSD Gx, Ex */ nextop = F8; diff --git a/src/tools/my_cpuid.c b/src/tools/my_cpuid.c index 6039f135..81399633 100644 --- a/src/tools/my_cpuid.c +++ b/src/tools/my_cpuid.c @@ -193,6 +193,7 @@ void my_cpuid(x64emu_t* emu, uint32_t tmp32u) R_EAX |= cpu<<24; }*/ R_EDX = 1 // fpu + | 1<<2 // debugging extension | 1<<4 // rdtsc | 1<<8 // cmpxchg8 | 1<<11 // sep (sysenter & sysexit) @@ -202,6 +203,7 @@ void my_cpuid(x64emu_t* emu, uint32_t tmp32u) | 1<<24 // fxsr (fxsave, fxrestore) | 1<<25 // SSE | 1<<26 // SSE2 + | 1<<28 // HT / Multi-core ; R_ECX = 1<<0 // SSE3 | 1<<1 // PCLMULQDQ @@ -209,6 +211,7 @@ void my_cpuid(x64emu_t* emu, uint32_t tmp32u) | 1<<12 // fma | 1<<13 // cx16 (cmpxchg16) | 1<<19 // SSE4_1 + | 1<<20 // SSE4_2 | 1<<22 // MOVBE | 1<<23 // POPCOUNT | 1<<25 // aesni diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index fbbbef76..b9ed9c42 100644 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -1562,7 +1562,7 @@ void CreateCPUInfoFile(int fd) P; sprintf(buff, "bogomips\t: %g\n", getBogoMips()); P; - sprintf(buff, "flags\t\t: fpu cx8 sep ht cmov clflush mmx sse sse2 syscall tsc lahf_lm ssse3 ht tm lm fma fxsr cpuid pclmulqdq cx16 aes movbe pni sse4_1 lzcnt popcnt\n"); + sprintf(buff, "flags\t\t: fpu cx8 sep ht cmov clflush mmx sse sse2 syscall tsc lahf_lm ssse3 ht tm lm fma fxsr cpuid pclmulqdq cx16 aes movbe pni sse4_1 sse4_2 lzcnt popcnt\n"); P; sprintf(buff, "address sizes\t: 48 bits physical, 48 bits virtual\n"); P; diff --git a/tests/ref27.txt b/tests/ref27.txt new file mode 100644 index 00000000..9eb9868d --- /dev/null +++ b/tests/ref27.txt @@ -0,0 +1,865 @@ +test SSE 4.2 +_mm_cmpestri("This is a string", 16, "This", 4, 0x0) => 0 +_mm_cmpestri("This is a string", 16, "This", 4, 0x0) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", 16, "This", 4, 0x0) = 0000000000000000-000000000000000f +_mm_cmpistri("This is a string", "This", 0x0) => 0 +_mm_cmpestri("This is a string", "This", 0x0) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", "This", 0x0) = 0000000000000000-000000000000000f +_mm_cmpestri("This is a string", 16, "This", 4, 0x1) => 0 +_mm_cmpestri("This is a string", 16, "This", 4, 0x1) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", 16, "This", 4, 0x1) = 0000000000000000-000000000000000f +_mm_cmpistri("This is a string", "This", 0x1) => 0 +_mm_cmpestri("This is a string", "This", 0x1) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", "This", 0x1) = 0000000000000000-000000000000000f +_mm_cmpestri("This", 4, "This is a string", 16, 0x0) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0x0) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0x0) = 0000000000000000-000000000000246f +_mm_cmpistri("This", "This is a string", 0x0) => 0 +_mm_cmpestri("This", "This is a string", 0x0) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0x0) = 0000000000000000-000000000000246f +_mm_cmpestri("This", 4, "This is a string", 16, 0x1) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0x1) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0x1) = 0000000000000000-000000000000006f +_mm_cmpistri("This", "This is a string", 0x1) => 0 +_mm_cmpestri("This", "This is a string", 0x1) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0x1) = 0000000000000000-000000000000006f +_mm_cmpestri("This is a string", 16, "is", 2, 0x0) => 0 +_mm_cmpestri("This is a string", 16, "is", 2, 0x0) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", 16, "is", 2, 0x0) = 0000000000000000-0000000000000003 +_mm_cmpistri("This is a string", "is", 0x0) => 0 +_mm_cmpestri("This is a string", "is", 0x0) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", "is", 0x0) = 0000000000000000-0000000000000003 +_mm_cmpestri("This is a string", 16, "is", 2, 0x1) => 0 +_mm_cmpestri("This is a string", 16, "is", 2, 0x1) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", 16, "is", 2, 0x1) = 0000000000000000-0000000000000003 +_mm_cmpistri("This is a string", "is", 0x1) => 0 +_mm_cmpestri("This is a string", "is", 0x1) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", "is", 0x1) = 0000000000000000-0000000000000003 +_mm_cmpestri("is", 2, "This is a string", 16, 0x0) => 2 +_mm_cmpestri("is", 2, "This is a string", 16, 0x0) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0x0) = 0000000000000000-000000000000246c +_mm_cmpistri("is", "This is a string", 0x0) => 2 +_mm_cmpestri("is", "This is a string", 0x0) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", "This is a string", 0x0) = 0000000000000000-000000000000246c +_mm_cmpestri("is", 2, "This is a string", 16, 0x1) => 2 +_mm_cmpestri("is", 2, "This is a string", 16, 0x1) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0x1) = 0000000000000000-000000000000006c +_mm_cmpistri("is", "This is a string", 0x1) => 2 +_mm_cmpestri("is", "This is a string", 0x1) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", "This is a string", 0x1) = 0000000000000000-000000000000006c +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x0) => 1 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x0) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x0) = 0000000000000000-000000000000c03a +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x0) => 1 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x0) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x0) = 0000000000000000-000000000000c03a +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x1) => 3 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x1) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x1) = 0000000000000000-0000000000000008 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x1) => 3 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x1) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x1) = 0000000000000000-0000000000000008 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x0) => 3 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x0) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x0) = 0000000000000000-0000000000001d48 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x0) => 3 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x0) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x0) = 0000000000000000-0000000000001d48 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x1) => 3 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x1) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x1) = 0000000000000000-0000000000000048 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x1) => 3 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x1) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x1) = 0000000000000000-0000000000000048 +_mm_cmpestri("This is a string", 16, "", 0, 0x0) => 16 +_mm_cmpestri("This is a string", 16, "", 0, 0x0) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x0) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x0) => 16 +_mm_cmpestri("This is a string", "", 0x0) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x0) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0x1) => 8 +_mm_cmpestri("This is a string", 16, "", 0, 0x1) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x1) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x1) => 8 +_mm_cmpestri("This is a string", "", 0x1) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x1) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x0) => 16 +_mm_cmpestri("", 0, "This is a string", 16, 0x0) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", 0, "This is a string", 16, 0x0) = 0000000000000000-0000000000000000 +_mm_cmpistri("", "This is a string", 0x0) => 16 +_mm_cmpestri("", "This is a string", 0x0) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", "This is a string", 0x0) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x1) => 8 +_mm_cmpestri("", 0, "This is a string", 16, 0x1) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", 0, "This is a string", 16, 0x1) = 0000000000000000-0000000000000000 +_mm_cmpistri("", "This is a string", 0x1) => 8 +_mm_cmpestri("", "This is a string", 0x1) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", "This is a string", 0x1) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "This", 4, 0x4) => 0 +_mm_cmpestri("This is a string", 16, "This", 4, 0x4) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", 16, "This", 4, 0x4) = 0000000000000000-000000000000000f +_mm_cmpistri("This is a string", "This", 0x4) => 0 +_mm_cmpestri("This is a string", "This", 0x4) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", "This", 0x4) = 0000000000000000-000000000000000f +_mm_cmpestri("This is a string", 16, "This", 4, 0x5) => 0 +_mm_cmpestri("This is a string", 16, "This", 4, 0x5) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", 16, "This", 4, 0x5) = 0000000000000000-000000000000000f +_mm_cmpistri("This is a string", "This", 0x5) => 0 +_mm_cmpestri("This is a string", "This", 0x5) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", "This", 0x5) = 0000000000000000-000000000000000f +_mm_cmpestri("This", 4, "This is a string", 16, 0x4) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0x4) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0x4) = 0000000000000000-000000000000f56f +_mm_cmpistri("This", "This is a string", 0x4) => 0 +_mm_cmpestri("This", "This is a string", 0x4) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0x4) = 0000000000000000-000000000000f56f +_mm_cmpestri("This", 4, "This is a string", 16, 0x5) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0x5) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0x5) = 0000000000000000-000000000000006f +_mm_cmpistri("This", "This is a string", 0x5) => 0 +_mm_cmpestri("This", "This is a string", 0x5) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0x5) = 0000000000000000-000000000000006f +_mm_cmpestri("This is a string", 16, "is", 2, 0x4) => 0 +_mm_cmpestri("This is a string", 16, "is", 2, 0x4) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", 16, "is", 2, 0x4) = 0000000000000000-0000000000000003 +_mm_cmpistri("This is a string", "is", 0x4) => 0 +_mm_cmpestri("This is a string", "is", 0x4) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", "is", 0x4) = 0000000000000000-0000000000000003 +_mm_cmpestri("This is a string", 16, "is", 2, 0x5) => 0 +_mm_cmpestri("This is a string", 16, "is", 2, 0x5) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", 16, "is", 2, 0x5) = 0000000000000000-0000000000000003 +_mm_cmpistri("This is a string", "is", 0x5) => 0 +_mm_cmpestri("This is a string", "is", 0x5) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", "is", 0x5) = 0000000000000000-0000000000000003 +_mm_cmpestri("is", 2, "This is a string", 16, 0x4) => 2 +_mm_cmpestri("is", 2, "This is a string", 16, 0x4) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0x4) = 0000000000000000-000000000000746c +_mm_cmpistri("is", "This is a string", 0x4) => 2 +_mm_cmpestri("is", "This is a string", 0x4) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", "This is a string", 0x4) = 0000000000000000-000000000000746c +_mm_cmpestri("is", 2, "This is a string", 16, 0x5) => 2 +_mm_cmpestri("is", 2, "This is a string", 16, 0x5) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0x5) = 0000000000000000-000000000000006c +_mm_cmpistri("is", "This is a string", 0x5) => 2 +_mm_cmpestri("is", "This is a string", 0x5) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", "This is a string", 0x5) = 0000000000000000-000000000000006c +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x4) => 0 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x4) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x4) = 0000000000000000-000000000000ffbf +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x4) => 0 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x4) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x4) = 0000000000000000-000000000000ffbf +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x5) => 0 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x5) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x5) = 0000000000000000-00000000000000af +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x5) => 0 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x5) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x5) = 0000000000000000-00000000000000af +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x4) => 0 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x4) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x4) = 0000000000000000-000000000000f56f +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x4) => 0 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x4) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x4) = 0000000000000000-000000000000f56f +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x5) => 1 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x5) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x5) = 0000000000000000-000000000000006e +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x5) => 1 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x5) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x5) = 0000000000000000-000000000000006e +_mm_cmpestri("This is a string", 16, "", 0, 0x4) => 16 +_mm_cmpestri("This is a string", 16, "", 0, 0x4) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x4) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x4) => 16 +_mm_cmpestri("This is a string", "", 0x4) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x4) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0x5) => 8 +_mm_cmpestri("This is a string", 16, "", 0, 0x5) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x5) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x5) => 8 +_mm_cmpestri("This is a string", "", 0x5) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x5) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x4) => 16 +_mm_cmpestri("", 0, "This is a string", 16, 0x4) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", 0, "This is a string", 16, 0x4) = 0000000000000000-0000000000000000 +_mm_cmpistri("", "This is a string", 0x4) => 16 +_mm_cmpestri("", "This is a string", 0x4) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", "This is a string", 0x4) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x5) => 8 +_mm_cmpestri("", 0, "This is a string", 16, 0x5) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", 0, "This is a string", 16, 0x5) = 0000000000000000-0000000000000000 +_mm_cmpistri("", "This is a string", 0x5) => 8 +_mm_cmpestri("", "This is a string", 0x5) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", "This is a string", 0x5) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "This", 4, 0x8) => 0 +_mm_cmpestri("This is a string", 16, "This", 4, 0x8) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", 16, "This", 4, 0x8) = 0000000000000000-000000000000000f +_mm_cmpistri("This is a string", "This", 0x8) => 0 +_mm_cmpestri("This is a string", "This", 0x8) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", "This", 0x8) = 0000000000000000-000000000000000f +_mm_cmpestri("This is a string", 16, "This", 4, 0x9) => 0 +_mm_cmpestri("This is a string", 16, "This", 4, 0x9) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", 16, "This", 4, 0x9) = 0000000000000000-000000000000000f +_mm_cmpistri("This is a string", "This", 0x9) => 0 +_mm_cmpestri("This is a string", "This", 0x9) flags: a:0 s:0 z:1 c:1 o:1 +mm_cmpestrm("This is a string", "This", 0x9) = 0000000000000000-000000000000000f +_mm_cmpestri("This", 4, "This is a string", 16, 0x8) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0x8) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0x8) = 0000000000000000-000000000000000f +_mm_cmpistri("This", "This is a string", 0x8) => 0 +_mm_cmpestri("This", "This is a string", 0x8) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0x8) = 0000000000000000-000000000000000f +_mm_cmpestri("This", 4, "This is a string", 16, 0x9) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0x9) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0x9) = 0000000000000000-000000000000000f +_mm_cmpistri("This", "This is a string", 0x9) => 0 +_mm_cmpestri("This", "This is a string", 0x9) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0x9) = 0000000000000000-000000000000000f +_mm_cmpestri("This is a string", 16, "is", 2, 0x8) => 16 +_mm_cmpestri("This is a string", 16, "is", 2, 0x8) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x8) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x8) => 16 +_mm_cmpestri("This is a string", "is", 0x8) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x8) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "is", 2, 0x9) => 8 +_mm_cmpestri("This is a string", 16, "is", 2, 0x9) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x9) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x9) => 8 +_mm_cmpestri("This is a string", "is", 0x9) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x9) = 0000000000000000-0000000000000000 +_mm_cmpestri("is", 2, "This is a string", 16, 0x8) => 16 +_mm_cmpestri("is", 2, "This is a string", 16, 0x8) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0x8) = 0000000000000000-0000000000000000 +_mm_cmpistri("is", "This is a string", 0x8) => 16 +_mm_cmpestri("is", "This is a string", 0x8) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("is", "This is a string", 0x8) = 0000000000000000-0000000000000000 +_mm_cmpestri("is", 2, "This is a string", 16, 0x9) => 8 +_mm_cmpestri("is", 2, "This is a string", 16, 0x9) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0x9) = 0000000000000000-0000000000000000 +_mm_cmpistri("is", "This is a string", 0x9) => 8 +_mm_cmpestri("is", "This is a string", 0x9) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("is", "This is a string", 0x9) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x8) => 3 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x8) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x8) = 0000000000000000-0000000000000008 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x8) => 3 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x8) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x8) = 0000000000000000-0000000000000008 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x9) => 3 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x9) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x9) = 0000000000000000-0000000000000008 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x9) => 3 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x9) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x9) = 0000000000000000-0000000000000008 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x8) => 3 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x8) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x8) = 0000000000000000-0000000000000008 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x8) => 3 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x8) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x8) = 0000000000000000-0000000000000008 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x9) => 3 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x9) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x9) = 0000000000000000-0000000000000008 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x9) => 3 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x9) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x9) = 0000000000000000-0000000000000008 +_mm_cmpestri("This is a string", 16, "", 0, 0x8) => 16 +_mm_cmpestri("This is a string", 16, "", 0, 0x8) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x8) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x8) => 16 +_mm_cmpestri("This is a string", "", 0x8) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x8) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0x9) => 8 +_mm_cmpestri("This is a string", 16, "", 0, 0x9) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x9) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x9) => 8 +_mm_cmpestri("This is a string", "", 0x9) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x9) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x8) => 16 +_mm_cmpestri("", 0, "This is a string", 16, 0x8) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", 0, "This is a string", 16, 0x8) = 0000000000000000-0000000000000000 +_mm_cmpistri("", "This is a string", 0x8) => 16 +_mm_cmpestri("", "This is a string", 0x8) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", "This is a string", 0x8) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x9) => 8 +_mm_cmpestri("", 0, "This is a string", 16, 0x9) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", 0, "This is a string", 16, 0x9) = 0000000000000000-0000000000000000 +_mm_cmpistri("", "This is a string", 0x9) => 8 +_mm_cmpestri("", "This is a string", 0x9) flags: a:1 s:1 z:0 c:0 o:0 +mm_cmpestrm("", "This is a string", 0x9) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "This", 4, 0xc) => 16 +_mm_cmpestri("This is a string", 16, "This", 4, 0xc) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0xc) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0xc) => 16 +_mm_cmpestri("This is a string", "This", 0xc) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0xc) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "This", 4, 0xd) => 8 +_mm_cmpestri("This is a string", 16, "This", 4, 0xd) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0xd) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0xd) => 8 +_mm_cmpestri("This is a string", "This", 0xd) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0xd) = 0000000000000000-0000000000000000 +_mm_cmpestri("This", 4, "This is a string", 16, 0xc) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0xc) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0xc) = 0000000000000000-0000000000000001 +_mm_cmpistri("This", "This is a string", 0xc) => 0 +_mm_cmpestri("This", "This is a string", 0xc) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0xc) = 0000000000000000-0000000000000001 +_mm_cmpestri("This", 4, "This is a string", 16, 0xd) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0xd) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0xd) = 0000000000000000-0000000000000001 +_mm_cmpistri("This", "This is a string", 0xd) => 0 +_mm_cmpestri("This", "This is a string", 0xd) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0xd) = 0000000000000000-0000000000000001 +_mm_cmpestri("This is a string", 16, "is", 2, 0xc) => 16 +_mm_cmpestri("This is a string", 16, "is", 2, 0xc) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0xc) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0xc) => 16 +_mm_cmpestri("This is a string", "is", 0xc) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0xc) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "is", 2, 0xd) => 8 +_mm_cmpestri("This is a string", 16, "is", 2, 0xd) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0xd) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0xd) => 8 +_mm_cmpestri("This is a string", "is", 0xd) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0xd) = 0000000000000000-0000000000000000 +_mm_cmpestri("is", 2, "This is a string", 16, 0xc) => 2 +_mm_cmpestri("is", 2, "This is a string", 16, 0xc) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0xc) = 0000000000000000-0000000000000024 +_mm_cmpistri("is", "This is a string", 0xc) => 2 +_mm_cmpestri("is", "This is a string", 0xc) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", "This is a string", 0xc) = 0000000000000000-0000000000000024 +_mm_cmpestri("is", 2, "This is a string", 16, 0xd) => 2 +_mm_cmpestri("is", 2, "This is a string", 16, 0xd) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0xd) = 0000000000000000-0000000000000024 +_mm_cmpistri("is", "This is a string", 0xd) => 2 +_mm_cmpestri("is", "This is a string", 0xd) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", "This is a string", 0xd) = 0000000000000000-0000000000000024 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0xc) => 16 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0xc) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0xc) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0xc) => 16 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0xc) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0xc) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0xd) => 8 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0xd) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0xd) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0xd) => 8 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0xd) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0xd) = 0000000000000000-0000000000000000 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0xc) => 16 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0xc) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0xc) = 0000000000000000-0000000000000000 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0xc) => 16 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0xc) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0xc) = 0000000000000000-0000000000000000 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0xd) => 8 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0xd) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0xd) = 0000000000000000-0000000000000000 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0xd) => 8 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0xd) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0xd) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0xc) => 16 +_mm_cmpestri("This is a string", 16, "", 0, 0xc) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0xc) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0xc) => 16 +_mm_cmpestri("This is a string", "", 0xc) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0xc) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0xd) => 8 +_mm_cmpestri("This is a string", 16, "", 0, 0xd) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0xd) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0xd) => 8 +_mm_cmpestri("This is a string", "", 0xd) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0xd) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0xc) => 0 +_mm_cmpestri("", 0, "This is a string", 16, 0xc) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0xc) = 0000000000000000-000000000000ffff +_mm_cmpistri("", "This is a string", 0xc) => 0 +_mm_cmpestri("", "This is a string", 0xc) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0xc) = 0000000000000000-000000000000ffff +_mm_cmpestri("", 0, "This is a string", 16, 0xd) => 0 +_mm_cmpestri("", 0, "This is a string", 16, 0xd) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0xd) = 0000000000000000-00000000000000ff +_mm_cmpistri("", "This is a string", 0xd) => 0 +_mm_cmpestri("", "This is a string", 0xd) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0xd) = 0000000000000000-00000000000000ff +_mm_cmpestri("This is a string", 16, "This", 4, 0x4c) => 16 +_mm_cmpestri("This is a string", 16, "This", 4, 0x4c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0x4c) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0x4c) => 16 +_mm_cmpestri("This is a string", "This", 0x4c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0x4c) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "This", 4, 0x4d) => 8 +_mm_cmpestri("This is a string", 16, "This", 4, 0x4d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0x4d) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0x4d) => 8 +_mm_cmpestri("This is a string", "This", 0x4d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0x4d) = 0000000000000000-0000000000000000 +_mm_cmpestri("This", 4, "This is a string", 16, 0x4c) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0x4c) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0x4c) = 0000000000000000-00000000000000ff +_mm_cmpistri("This", "This is a string", 0x4c) => 0 +_mm_cmpestri("This", "This is a string", 0x4c) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0x4c) = 0000000000000000-00000000000000ff +_mm_cmpestri("This", 4, "This is a string", 16, 0x4d) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0x4d) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0x4d) = 0000000000000000-000000000000ffff +_mm_cmpistri("This", "This is a string", 0x4d) => 0 +_mm_cmpestri("This", "This is a string", 0x4d) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0x4d) = 0000000000000000-000000000000ffff +_mm_cmpestri("This is a string", 16, "is", 2, 0x4c) => 16 +_mm_cmpestri("This is a string", 16, "is", 2, 0x4c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x4c) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x4c) => 16 +_mm_cmpestri("This is a string", "is", 0x4c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x4c) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "is", 2, 0x4d) => 8 +_mm_cmpestri("This is a string", 16, "is", 2, 0x4d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x4d) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x4d) => 8 +_mm_cmpestri("This is a string", "is", 0x4d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x4d) = 0000000000000000-0000000000000000 +_mm_cmpestri("is", 2, "This is a string", 16, 0x4c) => 5 +_mm_cmpestri("is", 2, "This is a string", 16, 0x4c) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0x4c) = 0000000000000000-0000000000ff0000 +_mm_cmpistri("is", "This is a string", 0x4c) => 5 +_mm_cmpestri("is", "This is a string", 0x4c) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", "This is a string", 0x4c) = 0000000000000000-0000000000ff0000 +_mm_cmpestri("is", 2, "This is a string", 16, 0x4d) => 5 +_mm_cmpestri("is", 2, "This is a string", 16, 0x4d) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0x4d) = 00000000ffff0000-0000000000000000 +_mm_cmpistri("is", "This is a string", 0x4d) => 5 +_mm_cmpestri("is", "This is a string", 0x4d) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", "This is a string", 0x4d) = 00000000ffff0000-0000000000000000 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x4c) => 16 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x4c) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x4c) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x4c) => 16 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x4c) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x4c) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x4d) => 8 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x4d) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x4d) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x4d) => 8 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x4d) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x4d) = 0000000000000000-0000000000000000 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x4c) => 16 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x4c) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x4c) = 0000000000000000-0000000000000000 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x4c) => 16 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x4c) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x4c) = 0000000000000000-0000000000000000 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x4d) => 8 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x4d) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x4d) = 0000000000000000-0000000000000000 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x4d) => 8 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x4d) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x4d) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0x4c) => 16 +_mm_cmpestri("This is a string", 16, "", 0, 0x4c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x4c) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x4c) => 16 +_mm_cmpestri("This is a string", "", 0x4c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x4c) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0x4d) => 8 +_mm_cmpestri("This is a string", 16, "", 0, 0x4d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x4d) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x4d) => 8 +_mm_cmpestri("This is a string", "", 0x4d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x4d) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x4c) => 15 +_mm_cmpestri("", 0, "This is a string", 16, 0x4c) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0x4c) = 00000000ffffffff-00000000ffffffff +_mm_cmpistri("", "This is a string", 0x4c) => 15 +_mm_cmpestri("", "This is a string", 0x4c) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0x4c) = 00000000ffffffff-00000000ffffffff +_mm_cmpestri("", 0, "This is a string", 16, 0x4d) => 7 +_mm_cmpestri("", 0, "This is a string", 16, 0x4d) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0x4d) = 00000000ffffffff-00000000ffffffff +_mm_cmpistri("", "This is a string", 0x4d) => 7 +_mm_cmpestri("", "This is a string", 0x4d) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0x4d) = 00000000ffffffff-00000000ffffffff +_mm_cmpestri("This is a string", 16, "This", 4, 0x2c) => 16 +_mm_cmpestri("This is a string", 16, "This", 4, 0x2c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0x2c) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0x2c) => 16 +_mm_cmpestri("This is a string", "This", 0x2c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0x2c) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "This", 4, 0x2d) => 8 +_mm_cmpestri("This is a string", 16, "This", 4, 0x2d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0x2d) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0x2d) => 8 +_mm_cmpestri("This is a string", "This", 0x2d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0x2d) = 0000000000000000-0000000000000000 +_mm_cmpestri("This", 4, "This is a string", 16, 0x2c) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0x2c) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0x2c) = 0000000000000000-0000000000000001 +_mm_cmpistri("This", "This is a string", 0x2c) => 0 +_mm_cmpestri("This", "This is a string", 0x2c) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0x2c) = 0000000000000000-0000000000000001 +_mm_cmpestri("This", 4, "This is a string", 16, 0x2d) => 0 +_mm_cmpestri("This", 4, "This is a string", 16, 0x2d) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", 4, "This is a string", 16, 0x2d) = 0000000000000000-0000000000000001 +_mm_cmpistri("This", "This is a string", 0x2d) => 0 +_mm_cmpestri("This", "This is a string", 0x2d) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("This", "This is a string", 0x2d) = 0000000000000000-0000000000000001 +_mm_cmpestri("This is a string", 16, "is", 2, 0x2c) => 16 +_mm_cmpestri("This is a string", 16, "is", 2, 0x2c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x2c) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x2c) => 16 +_mm_cmpestri("This is a string", "is", 0x2c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x2c) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "is", 2, 0x2d) => 8 +_mm_cmpestri("This is a string", 16, "is", 2, 0x2d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x2d) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x2d) => 8 +_mm_cmpestri("This is a string", "is", 0x2d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x2d) = 0000000000000000-0000000000000000 +_mm_cmpestri("is", 2, "This is a string", 16, 0x2c) => 2 +_mm_cmpestri("is", 2, "This is a string", 16, 0x2c) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0x2c) = 0000000000000000-0000000000000024 +_mm_cmpistri("is", "This is a string", 0x2c) => 2 +_mm_cmpestri("is", "This is a string", 0x2c) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", "This is a string", 0x2c) = 0000000000000000-0000000000000024 +_mm_cmpestri("is", 2, "This is a string", 16, 0x2d) => 2 +_mm_cmpestri("is", 2, "This is a string", 16, 0x2d) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", 2, "This is a string", 16, 0x2d) = 0000000000000000-0000000000000024 +_mm_cmpistri("is", "This is a string", 0x2d) => 2 +_mm_cmpestri("is", "This is a string", 0x2d) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("is", "This is a string", 0x2d) = 0000000000000000-0000000000000024 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x2c) => 16 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x2c) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x2c) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x2c) => 16 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x2c) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x2c) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x2d) => 8 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x2d) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x2d) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x2d) => 8 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x2d) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x2d) = 0000000000000000-0000000000000000 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x2c) => 16 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x2c) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x2c) = 0000000000000000-0000000000000000 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x2c) => 16 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x2c) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x2c) = 0000000000000000-0000000000000000 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x2d) => 8 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x2d) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x2d) = 0000000000000000-0000000000000000 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x2d) => 8 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x2d) flags: a:1 s:0 z:0 c:0 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x2d) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0x2c) => 16 +_mm_cmpestri("This is a string", 16, "", 0, 0x2c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x2c) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x2c) => 16 +_mm_cmpestri("This is a string", "", 0x2c) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x2c) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0x2d) => 8 +_mm_cmpestri("This is a string", 16, "", 0, 0x2d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x2d) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x2d) => 8 +_mm_cmpestri("This is a string", "", 0x2d) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x2d) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x2c) => 0 +_mm_cmpestri("", 0, "This is a string", 16, 0x2c) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0x2c) = 0000000000000000-000000000000ffff +_mm_cmpistri("", "This is a string", 0x2c) => 0 +_mm_cmpestri("", "This is a string", 0x2c) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0x2c) = 0000000000000000-000000000000ffff +_mm_cmpestri("", 0, "This is a string", 16, 0x2d) => 0 +_mm_cmpestri("", 0, "This is a string", 16, 0x2d) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0x2d) = 0000000000000000-00000000000000ff +_mm_cmpistri("", "This is a string", 0x2d) => 0 +_mm_cmpestri("", "This is a string", 0x2d) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0x2d) = 0000000000000000-00000000000000ff +_mm_cmpestri("This is a string", 16, "This", 4, 0x34) => 16 +_mm_cmpestri("This is a string", 16, "This", 4, 0x34) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0x34) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0x34) => 16 +_mm_cmpestri("This is a string", "This", 0x34) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0x34) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "This", 4, 0x35) => 8 +_mm_cmpestri("This is a string", 16, "This", 4, 0x35) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0x35) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0x35) => 8 +_mm_cmpestri("This is a string", "This", 0x35) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0x35) = 0000000000000000-0000000000000000 +_mm_cmpestri("This", 4, "This is a string", 16, 0x34) => 4 +_mm_cmpestri("This", 4, "This is a string", 16, 0x34) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", 4, "This is a string", 16, 0x34) = 0000000000000000-0000000000000a90 +_mm_cmpistri("This", "This is a string", 0x34) => 4 +_mm_cmpestri("This", "This is a string", 0x34) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", "This is a string", 0x34) = 0000000000000000-0000000000000a90 +_mm_cmpestri("This", 4, "This is a string", 16, 0x35) => 4 +_mm_cmpestri("This", 4, "This is a string", 16, 0x35) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", 4, "This is a string", 16, 0x35) = 0000000000000000-0000000000000090 +_mm_cmpistri("This", "This is a string", 0x35) => 4 +_mm_cmpestri("This", "This is a string", 0x35) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", "This is a string", 0x35) = 0000000000000000-0000000000000090 +_mm_cmpestri("This is a string", 16, "is", 2, 0x34) => 16 +_mm_cmpestri("This is a string", 16, "is", 2, 0x34) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x34) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x34) => 16 +_mm_cmpestri("This is a string", "is", 0x34) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x34) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "is", 2, 0x35) => 8 +_mm_cmpestri("This is a string", 16, "is", 2, 0x35) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x35) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x35) => 8 +_mm_cmpestri("This is a string", "is", 0x35) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x35) = 0000000000000000-0000000000000000 +_mm_cmpestri("is", 2, "This is a string", 16, 0x34) => 0 +_mm_cmpestri("is", 2, "This is a string", 16, 0x34) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", 2, "This is a string", 16, 0x34) = 0000000000000000-0000000000008b93 +_mm_cmpistri("is", "This is a string", 0x34) => 0 +_mm_cmpestri("is", "This is a string", 0x34) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", "This is a string", 0x34) = 0000000000000000-0000000000008b93 +_mm_cmpestri("is", 2, "This is a string", 16, 0x35) => 0 +_mm_cmpestri("is", 2, "This is a string", 16, 0x35) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", 2, "This is a string", 16, 0x35) = 0000000000000000-0000000000000093 +_mm_cmpistri("is", "This is a string", 0x35) => 0 +_mm_cmpestri("is", "This is a string", 0x35) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", "This is a string", 0x35) = 0000000000000000-0000000000000093 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x34) => 6 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x34) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x34) = 0000000000000000-0000000000000040 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x34) => 6 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x34) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x34) = 0000000000000000-0000000000000040 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x35) => 4 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x35) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x35) = 0000000000000000-0000000000000050 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x35) => 4 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x35) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x35) = 0000000000000000-0000000000000050 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x34) => 4 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x34) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x34) = 0000000000000000-0000000000000a90 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x34) => 4 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x34) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x34) = 0000000000000000-0000000000000a90 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x35) => 0 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x35) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x35) = 0000000000000000-0000000000000091 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x35) => 0 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x35) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x35) = 0000000000000000-0000000000000091 +_mm_cmpestri("This is a string", 16, "", 0, 0x34) => 16 +_mm_cmpestri("This is a string", 16, "", 0, 0x34) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x34) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x34) => 16 +_mm_cmpestri("This is a string", "", 0x34) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x34) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0x35) => 8 +_mm_cmpestri("This is a string", 16, "", 0, 0x35) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x35) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x35) => 8 +_mm_cmpestri("This is a string", "", 0x35) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x35) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x34) => 0 +_mm_cmpestri("", 0, "This is a string", 16, 0x34) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0x34) = 0000000000000000-000000000000ffff +_mm_cmpistri("", "This is a string", 0x34) => 0 +_mm_cmpestri("", "This is a string", 0x34) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0x34) = 0000000000000000-000000000000ffff +_mm_cmpestri("", 0, "This is a string", 16, 0x35) => 0 +_mm_cmpestri("", 0, "This is a string", 16, 0x35) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0x35) = 0000000000000000-00000000000000ff +_mm_cmpistri("", "This is a string", 0x35) => 0 +_mm_cmpestri("", "This is a string", 0x35) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0x35) = 0000000000000000-00000000000000ff +_mm_cmpestri("This is a string", 16, "This", 4, 0x36) => 16 +_mm_cmpestri("This is a string", 16, "This", 4, 0x36) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0x36) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0x36) => 16 +_mm_cmpestri("This is a string", "This", 0x36) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0x36) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "This", 4, 0x37) => 8 +_mm_cmpestri("This is a string", 16, "This", 4, 0x37) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0x37) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0x37) => 8 +_mm_cmpestri("This is a string", "This", 0x37) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0x37) = 0000000000000000-0000000000000000 +_mm_cmpestri("This", 4, "This is a string", 16, 0x36) => 4 +_mm_cmpestri("This", 4, "This is a string", 16, 0x36) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", 4, "This is a string", 16, 0x36) = 0000000000000000-0000000000000a90 +_mm_cmpistri("This", "This is a string", 0x36) => 4 +_mm_cmpestri("This", "This is a string", 0x36) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", "This is a string", 0x36) = 0000000000000000-0000000000000a90 +_mm_cmpestri("This", 4, "This is a string", 16, 0x37) => 4 +_mm_cmpestri("This", 4, "This is a string", 16, 0x37) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", 4, "This is a string", 16, 0x37) = 0000000000000000-0000000000000090 +_mm_cmpistri("This", "This is a string", 0x37) => 4 +_mm_cmpestri("This", "This is a string", 0x37) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", "This is a string", 0x37) = 0000000000000000-0000000000000090 +_mm_cmpestri("This is a string", 16, "is", 2, 0x36) => 16 +_mm_cmpestri("This is a string", 16, "is", 2, 0x36) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x36) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x36) => 16 +_mm_cmpestri("This is a string", "is", 0x36) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x36) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "is", 2, 0x37) => 8 +_mm_cmpestri("This is a string", 16, "is", 2, 0x37) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x37) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x37) => 8 +_mm_cmpestri("This is a string", "is", 0x37) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x37) = 0000000000000000-0000000000000000 +_mm_cmpestri("is", 2, "This is a string", 16, 0x36) => 0 +_mm_cmpestri("is", 2, "This is a string", 16, 0x36) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", 2, "This is a string", 16, 0x36) = 0000000000000000-0000000000008b93 +_mm_cmpistri("is", "This is a string", 0x36) => 0 +_mm_cmpestri("is", "This is a string", 0x36) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", "This is a string", 0x36) = 0000000000000000-0000000000008b93 +_mm_cmpestri("is", 2, "This is a string", 16, 0x37) => 0 +_mm_cmpestri("is", 2, "This is a string", 16, 0x37) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", 2, "This is a string", 16, 0x37) = 0000000000000000-0000000000000093 +_mm_cmpistri("is", "This is a string", 0x37) => 0 +_mm_cmpestri("is", "This is a string", 0x37) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", "This is a string", 0x37) = 0000000000000000-0000000000000093 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x36) => 6 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x36) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x36) = 0000000000000000-0000000000000040 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x36) => 6 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x36) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x36) = 0000000000000000-0000000000000040 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x37) => 4 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x37) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x37) = 0000000000000000-0000000000000050 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x37) => 4 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x37) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x37) = 0000000000000000-0000000000000050 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x36) => 4 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x36) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x36) = 0000000000000000-0000000000000a90 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x36) => 4 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x36) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x36) = 0000000000000000-0000000000000a90 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x37) => 0 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x37) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x37) = 0000000000000000-0000000000000091 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x37) => 0 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x37) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x37) = 0000000000000000-0000000000000091 +_mm_cmpestri("This is a string", 16, "", 0, 0x36) => 16 +_mm_cmpestri("This is a string", 16, "", 0, 0x36) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x36) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x36) => 16 +_mm_cmpestri("This is a string", "", 0x36) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x36) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0x37) => 8 +_mm_cmpestri("This is a string", 16, "", 0, 0x37) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x37) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x37) => 8 +_mm_cmpestri("This is a string", "", 0x37) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x37) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x36) => 0 +_mm_cmpestri("", 0, "This is a string", 16, 0x36) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0x36) = 0000000000000000-000000000000ffff +_mm_cmpistri("", "This is a string", 0x36) => 0 +_mm_cmpestri("", "This is a string", 0x36) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0x36) = 0000000000000000-000000000000ffff +_mm_cmpestri("", 0, "This is a string", 16, 0x37) => 0 +_mm_cmpestri("", 0, "This is a string", 16, 0x37) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0x37) = 0000000000000000-00000000000000ff +_mm_cmpistri("", "This is a string", 0x37) => 0 +_mm_cmpestri("", "This is a string", 0x37) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0x37) = 0000000000000000-00000000000000ff +_mm_cmpestri("This is a string", 16, "This", 4, 0x74) => 16 +_mm_cmpestri("This is a string", 16, "This", 4, 0x74) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0x74) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0x74) => 16 +_mm_cmpestri("This is a string", "This", 0x74) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0x74) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "This", 4, 0x75) => 8 +_mm_cmpestri("This is a string", 16, "This", 4, 0x75) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "This", 4, 0x75) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "This", 0x75) => 8 +_mm_cmpestri("This is a string", "This", 0x75) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "This", 0x75) = 0000000000000000-0000000000000000 +_mm_cmpestri("This", 4, "This is a string", 16, 0x74) => 11 +_mm_cmpestri("This", 4, "This is a string", 16, 0x74) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", 4, "This is a string", 16, 0x74) = 00000000ff00ff00-0000000000000000 +_mm_cmpistri("This", "This is a string", 0x74) => 11 +_mm_cmpestri("This", "This is a string", 0x74) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", "This is a string", 0x74) = 00000000ff00ff00-0000000000000000 +_mm_cmpestri("This", 4, "This is a string", 16, 0x75) => 7 +_mm_cmpestri("This", 4, "This is a string", 16, 0x75) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", 4, "This is a string", 16, 0x75) = 000000000000ffff-0000000000000000 +_mm_cmpistri("This", "This is a string", 0x75) => 7 +_mm_cmpestri("This", "This is a string", 0x75) flags: a:0 s:1 z:0 c:1 o:0 +mm_cmpestrm("This", "This is a string", 0x75) = 000000000000ffff-0000000000000000 +_mm_cmpestri("This is a string", 16, "is", 2, 0x74) => 16 +_mm_cmpestri("This is a string", 16, "is", 2, 0x74) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x74) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x74) => 16 +_mm_cmpestri("This is a string", "is", 0x74) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x74) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "is", 2, 0x75) => 8 +_mm_cmpestri("This is a string", 16, "is", 2, 0x75) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "is", 2, 0x75) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "is", 0x75) => 8 +_mm_cmpestri("This is a string", "is", 0x75) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "is", 0x75) = 0000000000000000-0000000000000000 +_mm_cmpestri("is", 2, "This is a string", 16, 0x74) => 15 +_mm_cmpestri("is", 2, "This is a string", 16, 0x74) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", 2, "This is a string", 16, 0x74) = 00000000ff00ffff-000000000000ffff +_mm_cmpistri("is", "This is a string", 0x74) => 15 +_mm_cmpestri("is", "This is a string", 0x74) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", "This is a string", 0x74) = 00000000ff00ffff-000000000000ffff +_mm_cmpestri("is", 2, "This is a string", 16, 0x75) => 7 +_mm_cmpestri("is", 2, "This is a string", 16, 0x75) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", 2, "This is a string", 16, 0x75) = 000000000000ffff-00000000ffffffff +_mm_cmpistri("is", "This is a string", 0x75) => 7 +_mm_cmpestri("is", "This is a string", 0x75) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("is", "This is a string", 0x75) = 000000000000ffff-00000000ffffffff +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x74) => 6 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x74) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x74) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x74) => 6 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x74) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x74) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x75) => 6 +_mm_cmpestri("This is a string", 16, "maestrum-foo-bar", 16, 0x75) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", 16, "maestrum-foo-bar", 16, 0x75) = 000000000000ffff-0000000000000000 +_mm_cmpistri("This is a string", "maestrum-foo-bar", 0x75) => 6 +_mm_cmpestri("This is a string", "maestrum-foo-bar", 0x75) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("This is a string", "maestrum-foo-bar", 0x75) = 000000000000ffff-0000000000000000 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x74) => 11 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x74) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x74) = 00000000ff00ff00-0000000000000000 +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x74) => 11 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x74) flags: a:0 s:0 z:0 c:1 o:0 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x74) = 00000000ff00ff00-0000000000000000 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x75) => 7 +_mm_cmpestri("maestrum-foo-bar", 16, "This is a string", 16, 0x75) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("maestrum-foo-bar", 16, "This is a string", 16, 0x75) = 000000000000ffff-000000000000ffff +_mm_cmpistri("maestrum-foo-bar", "This is a string", 0x75) => 7 +_mm_cmpestri("maestrum-foo-bar", "This is a string", 0x75) flags: a:0 s:0 z:0 c:1 o:1 +mm_cmpestrm("maestrum-foo-bar", "This is a string", 0x75) = 000000000000ffff-000000000000ffff +_mm_cmpestri("This is a string", 16, "", 0, 0x74) => 16 +_mm_cmpestri("This is a string", 16, "", 0, 0x74) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x74) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x74) => 16 +_mm_cmpestri("This is a string", "", 0x74) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x74) = 0000000000000000-0000000000000000 +_mm_cmpestri("This is a string", 16, "", 0, 0x75) => 8 +_mm_cmpestri("This is a string", 16, "", 0, 0x75) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", 16, "", 0, 0x75) = 0000000000000000-0000000000000000 +_mm_cmpistri("This is a string", "", 0x75) => 8 +_mm_cmpestri("This is a string", "", 0x75) flags: a:0 s:0 z:1 c:0 o:0 +mm_cmpestrm("This is a string", "", 0x75) = 0000000000000000-0000000000000000 +_mm_cmpestri("", 0, "This is a string", 16, 0x74) => 15 +_mm_cmpestri("", 0, "This is a string", 16, 0x74) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0x74) = 00000000ffffffff-00000000ffffffff +_mm_cmpistri("", "This is a string", 0x74) => 15 +_mm_cmpestri("", "This is a string", 0x74) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0x74) = 00000000ffffffff-00000000ffffffff +_mm_cmpestri("", 0, "This is a string", 16, 0x75) => 7 +_mm_cmpestri("", 0, "This is a string", 16, 0x75) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", 0, "This is a string", 16, 0x75) = 00000000ffffffff-00000000ffffffff +_mm_cmpistri("", "This is a string", 0x75) => 7 +_mm_cmpestri("", "This is a string", 0x75) flags: a:0 s:1 z:0 c:1 o:1 +mm_cmpestrm("", "This is a string", 0x75) = 00000000ffffffff-00000000ffffffff diff --git a/tests/test27 b/tests/test27 new file mode 100755 index 00000000..24fb8aa9 --- /dev/null +++ b/tests/test27 Binary files differdiff --git a/tests/test27.c b/tests/test27.c new file mode 100644 index 00000000..82b72030 --- /dev/null +++ b/tests/test27.c @@ -0,0 +1,111 @@ +// build with gcc -O0 -g -msse -msse2 -mssse3 -msse4.1 -msse4.2 test27.c -o test27 +// and -m32 for 32bits version +#include <inttypes.h> +#include <string.h> +#include <stdio.h> +#include <stddef.h> +#include <stdlib.h> +#include <stdint.h> +#include <math.h> +#include <pmmintrin.h> +#include <immintrin.h> + +typedef unsigned char u8x16 __attribute__ ((vector_size (16))); +typedef unsigned short u16x8 __attribute__ ((vector_size (16))); +typedef unsigned int u32x4 __attribute__ ((vector_size (16))); +typedef unsigned long int u64x2 __attribute__ ((vector_size (16))); +typedef float f32x4 __attribute__ ((vector_size (16))); +typedef double d64x2 __attribute__ ((vector_size (16))); + +const char* string1 = "This is a string"; +const char* string2 = "This\0 string "; +const char* string3 = "is\0 "; +const char* string4 = "maestrum-foo-bar"; +const char* string5 = "\0 "; + +typedef union { + __m128i mm; + __m128 mf; + __m128d md; + u8x16 u8; + u16x8 u16; + u32x4 u32; + u64x2 u64; + f32x4 f32; + d64x2 d64; +} v128; + +v128 load_string(const char* s) +{ + v128 ret; + for(int i=0; i<16; ++i) + ret.u8[i] = s[i]; + return ret; +} +v128 load_stringw(const char* s) +{ + v128 ret; + for(int i=0; i<8; ++i) + ret.u16[i] = s[i]; + return ret; +} + +int main(int argc, const char** argv) +{ + printf("test SSE 4.2\n"); + + v128 a, b, c; + int ret; + int fa, fc, fo, fs, fz; + #define GO1(A, B, C) \ + ret = _mm_cmpestri(a.mm, strlen(A), b.mm, strlen(B), C); \ + printf("_mm_cmpestri(\"%s\", %d, \"%s\", %d, 0x%x) => %d\n", A, strlen(A), B, strlen(B), C, ret); \ + fa = _mm_cmpestra(a.mm, strlen(A), b.mm, strlen(B), C); \ + fc = _mm_cmpestrc(a.mm, strlen(A), b.mm, strlen(B), C); \ + fo = _mm_cmpestro(a.mm, strlen(A), b.mm, strlen(B), C); \ + fs = _mm_cmpestrs(a.mm, strlen(A), b.mm, strlen(B), C); \ + fz = _mm_cmpestrz(a.mm, strlen(A), b.mm, strlen(B), C); \ + printf("_mm_cmpestri(\"%s\", %d, \"%s\", %d, 0x%x) flags: a:%d s:%d z:%d c:%d o:%d\n", A, strlen(A), B, strlen(B), C, fa, fs, fz, fc, fo); \ + c.mm = _mm_cmpestrm(a.mm, strlen(A), b.mm, strlen(B), C); \ + printf("mm_cmpestrm(\"%s\", %d, \"%s\", %d, 0x%x) = %016x-%016x\n", A, strlen(A), B, strlen(B), C, c.u64[1], c.u64[0]); \ + ret = _mm_cmpistri(a.mm, b.mm, C); \ + printf("_mm_cmpistri(\"%s\", \"%s\", 0x%x) => %d\n", A, B, C, ret); \ + fa = _mm_cmpistra(a.mm, b.mm, C); \ + fc = _mm_cmpistrc(a.mm, b.mm, C); \ + fo = _mm_cmpistro(a.mm, b.mm, C); \ + fs = _mm_cmpistrs(a.mm, b.mm, C); \ + fz = _mm_cmpistrz(a.mm, b.mm, C); \ + printf("_mm_cmpestri(\"%s\", \"%s\", 0x%x) flags: a:%d s:%d z:%d c:%d o:%d\n", A, B, C, fa, fs, fz, fc, fo); \ + c.mm = _mm_cmpistrm(a.mm, b.mm, C); \ + printf("mm_cmpestrm(\"%s\", \"%s\", 0x%x) = %016x-%016x\n", A, B, C, c.u64[1], c.u64[0]) + + #define GO(A, B, C) \ + a = load_string(A); \ + b = load_string(B); \ + GO1(A, B, C); \ + a = load_stringw(A);\ + b = load_stringw(B);\ + GO1(A, B, C+1) \ + + #define GO2(C) \ + GO(string1, string2, C); \ + GO(string2, string1, C); \ + GO(string1, string3, C); \ + GO(string3, string1, C); \ + GO(string1, string4, C); \ + GO(string4, string1, C); \ + GO(string1, string5, C); \ + GO(string5, string1, C); + + GO2(0x00) + GO2(0x04) + GO2(0x08) + GO2(0x0c) + GO2(0b1001100) + GO2(0b0101100) + GO2(0b0110100) + GO2(0b0110110) + GO2(0b1110100) + + return 0; +} |