Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement SSE4.2 text processing intrinsics #308

Closed
jserv opened this issue Feb 13, 2021 · 4 comments · Fixed by #555
Closed

Implement SSE4.2 text processing intrinsics #308

jserv opened this issue Feb 13, 2021 · 4 comments · Fixed by #555
Assignees

Comments

@jserv
Copy link
Member

jserv commented Feb 13, 2021

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 jserv self-assigned this Feb 13, 2021
@aagontuk
Copy link

aagontuk commented Jul 16, 2022

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.

@jserv
Copy link
Member Author

jserv commented Aug 6, 2022

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

@jserv
Copy link
Member Author

jserv commented Oct 9, 2022

@jserv jserv removed their assignment Oct 22, 2022
@Cuda-Chen
Copy link
Collaborator

Cuda-Chen commented Nov 29, 2022

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

jserv pushed a commit that referenced this issue Dec 11, 2022
_mm_cmpistra, _mm_cmpistrc, _mm_cmpistro, _mm_cmpistrs, and _mm_cmpistrz are
implemented.

Close #308
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants