Describe the bug, including details regarding any error messages, version, and platform.
Arrow's bpacking large kernel asks xsimd for a left shift by the full width of the lane, and depends on the answer being zero.
xsimd does not promise that. SSE2, AVX2 and NEON produce zero, while other instruction sets (e.g. LSX, LASX) take the amount modulo the lane width and return the lane untouched.
The bits then survive the mask and the value decodes incorrectly, with no error reported.
Component(s)
C++
Describe the bug, including details regarding any error messages, version, and platform.
Arrow's bpacking large kernel asks xsimd for a left shift by the full width of the lane, and depends on the answer being zero.
xsimd does not promise that. SSE2, AVX2 and NEON produce zero, while other instruction sets (e.g. LSX, LASX) take the amount modulo the lane width and return the lane untouched.
The bits then survive the mask and the value decodes incorrectly, with no error reported.
Component(s)
C++