SSE2 is interesting because it is part of the baseline x86_64 instruction set, so it can be used without any runtime dispatch and the associated overhead.
I've prototyped a dedicated SSE2 level in the generator as a replacement for the Fallback level on x86, but most operations already autovectorize just fine, so it wasn't worth the additional complexity in the generator for the sake of a handful of operations for 2% of users.
However, there are use cases for the SSE2 level with the kernel! macro. For example, image-webp crate wants a safe way to access SSE2 intrinsics and safe loads/stores. So perhaps we can provide a minimal implementation that falls through to either SSE4.2 (where only SSE2 instructions are used) or fallback, without writing any SSE2-specific intrinsic code.
SSE2 is interesting because it is part of the baseline x86_64 instruction set, so it can be used without any runtime dispatch and the associated overhead.
I've prototyped a dedicated SSE2 level in the generator as a replacement for the
Fallbacklevel on x86, but most operations already autovectorize just fine, so it wasn't worth the additional complexity in the generator for the sake of a handful of operations for 2% of users.However, there are use cases for the SSE2 level with the
kernel!macro. For example,image-webpcrate wants a safe way to access SSE2 intrinsics and safe loads/stores. So perhaps we can provide a minimal implementation that falls through to either SSE4.2 (where only SSE2 instructions are used) or fallback, without writing any SSE2-specific intrinsic code.