@article{ClauseckerLemire2023, author = {Clausecker, Robert and Lemire, Daniel}, title = {Transcoding unicode characters with AVX-512 instructions}, volume = {53}, journal = {Software: Practice and Experience}, number = {12}, publisher = {John Wiley \& Sons Ltd.}, doi = {10.1002/spe.3261}, pages = {2430 -- 2462}, year = {2023}, abstract = {Intel includes in its recent processors a powerful set of instructions capable of processing 512-bit registers with a single instruction (AVX-512). Some of these instructions have no equivalent in earlier instruction sets. We leverage these instructions to efficiently transcode strings between the most common formats: UTF-8 and UTF-16. With our novel algorithms, we are often twice as fast as the previous best solutions. For example, we transcode Chinese text from UTF-8 to UTF-16 at more than 5 GiB s-1 using fewer than 2 CPU instructions per character. To ensure reproducibility, we make our software freely available as an open-source library. Our library is part of the popular Node.js JavaScript runtime.}, language = {en} } @article{ClauseckerLemireSchintke2025, author = {Clausecker, Robert and Lemire, Daniel and Schintke, Florian}, title = {Faster Positional-Population Counts for AVX2, AVX-512, and ASIMD}, volume = {37}, journal = {Concurrency and Computation: Practice and Experience}, number = {27-28}, publisher = {Wiley}, issn = {1532-0626}, doi = {10.1002/cpe.70435}, year = {2025}, language = {en} } @article{ClauseckerLemireSchintke2024, author = {Clausecker, Robert and Lemire, Daniel and Schintke, Florian}, title = {Faster Positional-Population Counts for AVX2, AVX-512, and ASIMD}, volume = {abs/2412.16370}, journal = {CoRR}, doi = {10.48550/arXiv.2412.16370}, pages = {1 -- 23}, year = {2024}, language = {en} }