sse2neon icon indicating copy to clipboard operation
sse2neon copied to clipboard

Implement SSE4.2 text processing intrinsics

Open jserv opened this issue 3 years ago • 2 comments

Apache Impala adopts SSE2NEON along with partial SSE4.2 text processing intrinsics support in file be/src/util/sse-util.h:

  • cmpestrm
  • cmpestri

However, the above were neither optimized nor generic. Instead, we can provide the full-functioned instrinsics in SSE2NEON. Reference:

jserv avatar Feb 13 '21 09:02 jserv

Hi, I was wondering if mm_cmpestri was implemented? I am getting the following error while compiling with sse2neon:

utils/http_parser.cc:119:11: error: ‘_SIDD_LEAST_SIGNIFICANT’ was not declared in this scope
  119 |           _SIDD_LEAST_SIGNIFICANT | _SIDD_CMP_RANGES | _SIDD_UBYTE_OPS);
      |           ^~~~~~~~~~~~~~~~~~~~~~~
utils/http_parser.cc:119:37: error: ‘_SIDD_CMP_RANGES’ was not declared in this scope
  119 |           _SIDD_LEAST_SIGNIFICANT | _SIDD_CMP_RANGES | _SIDD_UBYTE_OPS);
      |                                     ^~~~~~~~~~~~~~~~
utils/http_parser.cc:119:56: error: ‘_SIDD_UBYTE_OPS’ was not declared in this scope
  119 |           _SIDD_LEAST_SIGNIFICANT | _SIDD_CMP_RANGES | _SIDD_UBYTE_OPS);
      |                                                        ^~~~~~~~~~~~~~~
utils/http_parser.cc:117:15: error: ‘_mm_cmpestri’ was not declared in this scope; did you mean ‘_mm_cmpeq_sd’?
  117 |       int r = _mm_cmpestri(

These are all defined in smmintrin.h in x86.

aagontuk avatar Jul 16 '22 01:07 aagontuk

@aagontuk, Both _mm_cmpestri and _mm_cmpestrm are being implemented recently. Please check #534 for details.

jserv avatar Aug 06 '22 19:08 jserv

Currently, sse2neon supports these SSE4.2 text processing intrinsics:

  • PCMPESTR
    • _mm_cmpestri
    • _mm_cmpestrm
    • _mm_cmpestra
    • _mm_cmpestrc
    • _mm_cmpestro
    • _mm_cmpestrs
    • _mm_cmpestrz
  • PCMPISTR
    • _mm_cmpistri
    • _mm_cmpistrm

Cuda-Chen avatar Nov 29 '22 01:11 Cuda-Chen