Go version
N/A
Output of go env in your module/workspace:
What did you do?
I was playing around with an AVX512 base64 encoder (for #20206).
As part of that, one needs to logically split 48 uint8s into 64 uint6s.
I implemented the algorithms suggested by @WojciechMula and @lemire in http://0x80.pl/notesen/2016-01-12-sse-base64-encoding.html.
However, per https://arxiv.org/pdf/1910.05109, there is a simpler, more direct instruction that solves essentially exactly this problem: VPMULTISHIFTQB.
I do not think this instruction is currently exposed by simd/archsimd.
What did you see happen?
No function in archsimd exposing VPMULTISHIFTQB.
What did you expect to see?
A function in archsimd exposing VPMULTISHIFTQB.
Go version
N/A
Output of
go envin your module/workspace:What did you do?
I was playing around with an AVX512 base64 encoder (for #20206).
As part of that, one needs to logically split 48 uint8s into 64 uint6s.
I implemented the algorithms suggested by @WojciechMula and @lemire in http://0x80.pl/notesen/2016-01-12-sse-base64-encoding.html.
However, per https://arxiv.org/pdf/1910.05109, there is a simpler, more direct instruction that solves essentially exactly this problem: VPMULTISHIFTQB.
I do not think this instruction is currently exposed by simd/archsimd.
What did you see happen?
No function in archsimd exposing VPMULTISHIFTQB.
What did you expect to see?
A function in archsimd exposing VPMULTISHIFTQB.