-
Notifications
You must be signed in to change notification settings - Fork 165
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
AVX: enc: add inline asm codepath #108
Labels
Comments
aklomp
added a commit
that referenced
this issue
Oct 19, 2022
Issue #104 introduced an inline assembly version of the AVX2 base64 encoder. It turns out that we can reuse this implementation almost verbatim for AVX if we replace the 256-bit AVX2 registers with 128-bit AVX registers. Some small changes are needed, such as changing the stride widths and removing the special handling of the first round, but overall the code remains the same. Tested with the Intel SDE instruction set emulator running in Sandy Bridge mode (with AVX, but no AVX2). Resolves #108.
aklomp
added a commit
that referenced
this issue
Oct 19, 2022
encoder. It turns out that we can reuse this implementation almost verbatim for AVX if we replace the 256-bit AVX2 registers with 128-bit AVX registers. Some small changes are needed, such as changing the stride widths and removing the special handling of the first round, but overall the code remains the same. Tested with the Intel SDE instruction set emulator running in Sandy Bridge mode (with AVX, but no AVX2). Resolves #108.
aklomp
added a commit
that referenced
this issue
Oct 19, 2022
Issue #104 introduced an inline assembly version of the AVX2 base64 encoder. It turns out that we can reuse this implementation almost verbatim for AVX if we replace the 256-bit AVX2 registers with 128-bit AVX registers. Some small changes are needed, such as changing the stride widths and removing the special handling of the first round, but overall the code remains the same. Tested with the Intel SDE instruction set emulator running in Sandy Bridge mode (with AVX, but no AVX2). Resolves #108.
aklomp
added a commit
that referenced
this issue
Oct 19, 2022
Issue #104 introduced an inline assembly version of the AVX2 base64 encoder. It turns out that we can reuse this implementation almost verbatim for AVX if we replace the 256-bit AVX2 registers with 128-bit AVX registers. Some small changes are needed, such as changing the stride widths and removing the special handling of the first round, but overall the code remains the same. Tested with the Intel SDE instruction set emulator running in Sandy Bridge mode (with AVX, but no AVX2). Resolves #108.
aklomp
changed the title
AVX: enc: add inline asm codepath enhancement
AVX: enc: add inline asm codepath
Oct 19, 2022
aklomp
added a commit
that referenced
this issue
Oct 22, 2022
Disable the inline assembly codepath on 32-bit x86 (known as x86-32 or i686), because the 32-bit x86 architecture only has eight XMM registers, which is not enough to run the code. Since this was not caught in CI before merging #104 and #108, add a test to compile the library on i686. Resolves #110.
Closed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Issue #104 introduced an inline assembly version of the AVX2 base64 encoder. It turns out that we can reuse this implementation almost verbatim for AVX if we replace the 256-bit AVX2 registers with 128-bit AVX registers. Some small changes are needed, such as changing the stride widths and removing the special handling of the first round, but overall the code remains the same.
The text was updated successfully, but these errors were encountered: