https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99037
Bug ID: 99037 Summary: Invalid representation of vector zero in aarch64-simd.md Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: rsandifo at gcc dot gnu.org CC: andre.simoesdiasvieira at arm dot com Target Milestone: --- Target: aarch64*-*-* As Andre noticed, the following patterns have an invalid representation of constant zero: - move_lo_quad_internal_<mode> - move_lo_quad_internal_be_<mode> The vector forms use (vec_duplicate …) of a constant instead of a const_vector, and both forms use (const_int 0) even for FP modes. In r5-3343 the patterns were split into two, one with a vec_duplicate and one with a const_int. But I think that was the wrong (partial) fix: we should have a single pattern for each, but use aarch64_simd_or_scalar_imm_zero to match the right form. I guess this will have to wait for GCC 12 at this point.