Comment 3 for bug 1928097

Revision history for this message
Marco Heisig (marco-heisig-h) wrote :

> Intel doesn't recommend mixing integer and float operations.

I agree, using vinsertf128 in these places is not pretty. But GCC and Clang also use vinsertf128 for destructuring integer packs on platforms without AVX2. Maybe we could conditionally switch between vinserti128/vinsertf128 depending on whether AVX2 is available or not? Something like

(inst #.(if +avx2-supported+ 'vinserti128 'vinsertf128) dst dst tmp 1)

> How many machines are there that don't have AVX2 and yet people want to use AVX instructions on them?

I get the occasional bug report from early adopters of sb-simd, and one of my development machines is also affected.

My main concern is that sb-ext exports functions that are known to SIGILL on certain platforms. An alternative fix would be to disable 256 bit packs on those platforms. But since making this work is just a five line patch, and since there are good use-cases for 256 bit packs even with just AVX, I'd love to see this fixed.