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.

Reply via email to