https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115464
--- Comment #10 from Tamar Christina <tnfchris at gcc dot gnu.org> --- Thanks for the fix, but I don't think it's sufficient. what I meant with the earlier comment was that the subregs are broken in general, so not just the one generated by the undef fast path. i.e. #include <arm_neon.h> #include <arm_sve.h> #include <arm_neon_sve_bridge.h> svuint16_t convolve4_4_x (uint16x8x2_t permute_tbl, svuint16_t a) { return svset_neonq_u16 (a, permute_tbl.val[1]); } seems to still ICE for me because it goes into the general expander which produces the same subreg.