> Pengxuan Zheng <quic_pzh...@quicinc.com> writes:
> > diff --git a/gcc/testsuite/gcc.target/aarch64/fmov-3-le.c
> > b/gcc/testsuite/gcc.target/aarch64/fmov-3-le.c
> > new file mode 100644
> > index 00000000000..adbf87243f6
> > --- /dev/null
> > +++ b/gcc/testsuite/gcc.target/aarch64/fmov-3-le.c
> > @@ -0,0 +1,130 @@
> > +/* { dg-do compile } */
> > +/* { dg-options "-O2 -mlittle-endian" } */
> > +/* { dg-final { check-function-bodies "**" "" "" } } */
> > +
> > +typedef short v4hi __attribute__ ((vector_size (8))); typedef char
> > +v8qi __attribute__ ((vector_size (8))); typedef int v4si
> > +__attribute__ ((vector_size (16))); typedef float v4sf __attribute__
> > +((vector_size (16))); typedef short v8hi __attribute__ ((vector_size
> > +(16))); typedef char v16qi __attribute__ ((vector_size (16)));
> > +
> > +/*
> > +** f_v4hi:
> > +** fmov    s0, s0
> > +** ret
> > +*/
> > +v4hi
> > +f_v4hi (v4hi x)
> > +{
> > +  return __builtin_shuffle (x, (v4hi){ 0, 0, 0, 0 }, (v4hi){ 0, 1, 4,
> > +5 }); }
> > +
> > +/*
> > +** g_v4hi:
> > +** uzp1    v([0-9]+).2d, v0.2d, v0.2d
> > +** adrp    x([0-9]+), .LC0
> > +** ldr     d([0-9]+), \[x\2, #:lo12:.LC0\]
> > +** tbl     v0.8b, {v\1.16b}, v\3.8b
> > +** ret
> 
> The important thing here is that we don't generate FMOV, rather than that
we
> generate the sequence above.  The test could therefore be:
> 
> **    (?:(?!fmov).)*
> **    ret
> 
> However, the test might be run with a newer architecture that has fp16
> enabled, so it would be safer to add:
> 
>   #pragma GCC target "armv8-a"
> 
> before the typedefs at the top of the file.
> 
> LGTM otherwise, thanks.  As with the other patches, please leave 24 hours
for
> others to comment, but otherwise the patch is ok with the changes above.
> 
> Richard

Thanks, Richard! I've updated the patch accordingly and pushed it as
r16-704-g265fdb3fa91346.

Pengxuan


Reply via email to