Use AVX2 to accelerate strto{upper,lower} (only on 'AVX2-native' builds for now)#10493
Closed
alexdowad wants to merge 1 commit into
Closed
Use AVX2 to accelerate strto{upper,lower} (only on 'AVX2-native' builds for now)#10493alexdowad wants to merge 1 commit into
alexdowad wants to merge 1 commit into
Conversation
…ds for now) On short strings, there is no difference in performance. However, for strings around 10,000 bytes long, the AVX2-accelerated function is about 55% faster than the SSE2-accelerated one.
Contributor
Author
|
It would be better if the 'AVX2 resolver' stuff was implemented as well... this is just a quick change which I coded up in a few minutes, which boosts performance for AVX2-only builds. |
ndossche
reviewed
Feb 3, 2023
|
|
||
| #define BLOCKCONV_LOAD(input) \ | ||
| __m256i blconv_operand = _mm256_loadu_si256((__m256i*)(input)); \ | ||
| __m256i blconv_mask = _mm256_cmpgt_epi8(blconv_threshold, _mm256_add_epi8(blconv_operand, blconv_offset)); |
Member
There was a problem hiding this comment.
Nit: Maybe this should be changed to lt instead of gt with the argument swapped in order to be symmetric with the SSE2 version.
Contributor
Author
There was a problem hiding this comment.
😄 There is no such thing as _mm256_cmplt_epi8. That's why I had to change to cmpgt and swap the arguments to get the code to compile.
Ref: https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmplt_epi8
If we want to make it symmetric, then we would need to change the SSE2 version.
Contributor
Author
|
Thanks for reviewing! Just merging now. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On short strings, there is no difference in performance. However, for strings around 10,000 bytes long, the AVX2-accelerated function is about 55% faster than the SSE2-accelerated one.
FYA @cmb69 @Girgias @nikic @nielsdos