mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-11 02:00:20 +02:00
SVE has a special version of their gather instruction that gets similar behaviour to x86's VGATHERQPS/VPGATHERQD instructions. The quirk of these instructions that the previous SVE implementation didn't handle and required ASIMD fallback, was that most gather instructions require the data element size and address element size to match. This x86 instruction uses a 64-bit address size while loading 32-bit elements. This matches this specific variant of the SVE instruction, but the data is zero-extended once loaded, requiring us to shuffle the data after it is loaded. This isn't the worst but the implementation is different enough that stuffing it in to the other gather load will cause headaches. Basically gets 32 instruction variants to use the SVE version! Fixes #3827