https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115611

            Bug ID: 115611
           Summary: mve: vsetq_lane for 64-bits has wrong codegen when
                    setting lane 1
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: avieira at gcc dot gnu.org
  Target Milestone: ---

When compiling:
$ cat t.s
#include <arm_mve.h>

int64x2_t fn (int64x2_t v, int64_t a)
{
    return vsetq_lane_s64(a, v, 1);
}

compiled with:
$ gcc -O2 -mfloat-abi=hard -mcpu=cortex-m85 t.c -S

yields:
fn:
        vmov    d1, r2, r3
        bx      lr

The r2, r3 are pointing to an undefined register, it should have been r0, r1.

This is due to an issue with the printing operands in mve_vec_setv2di_internal.
I have a patch for this.

Reply via email to