https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112105
--- Comment #2 from Richard Sandiford <rsandifo at gcc dot gnu.org> --- Seems to be due to aarch64_modes_tieable_p saying that SF can't be tied to V2x2SF, so that a subreg of that form is given a cost of 2 instructions. Using: if (aarch64_vector_data_mode_p (mode1) || aarch64_vector_data_mode_p (mode2)) return true; makes the test work, but who knows what the knock-on effects will be…