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.