Hi! On Thu, Nov 14, 2019 at 07:21:31PM -0500, Michael Meissner wrote: > This patch tests whether using large numeric offsets causes prefixed loads or > stores to be generated.
> --- /tmp/RMaUEu_prefix-large-dd.c 2019-11-13 17:42:31.960524470 -0500 > +++ gcc/testsuite/gcc.target/powerpc/prefix-large-dd.c 2019-11-13 > 17:42:31.719522299 -0500 > @@ -0,0 +1,13 @@ > +/* { dg-do compile } */ > +/* { dg-require-effective-target powerpc_prefixed_addr_ok } */ > +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ > + > +/* Tests for prefixed instructions testing whether we can generate a prefixed > + load/store instruction that has a 34-bit offset. */ "Do", not "can", etc. And it tests for 21-bit (unsigned) or 22-bit (signed) numbers, not 34-bit. You could just say "larger offset", or similar? > --- /tmp/rcmxsH_prefix-large-sd.c 2019-11-13 17:42:32.004524866 -0500 > +++ gcc/testsuite/gcc.target/powerpc/prefix-large-sd.c 2019-11-13 > 17:42:31.751522588 -0500 > @@ -0,0 +1,16 @@ > +/* { dg-do compile } */ > +/* { dg-require-effective-target powerpc_prefixed_addr_ok } */ > +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ > + > +/* Tests for prefixed instructions testing whether we can generate a prefixed > + load/store instruction that has a 34-bit offset. */ That is not what this test tests: > +#define TYPE _Decimal32 > + > +#include "prefix-large.h" > + > +/* { dg-final { scan-assembler-times {\mpaddi\M|\mpli|\mpla\M} 3 } } */ > +/* { dg-final { scan-assembler-times {\mlfiwzx\M} 2 } } */ > +/* { dg-final { scan-assembler-times {\mstfiwx\M} 2 } } */ It tests that we *do not* generate prefixed load and store insns. > --- /tmp/ROIUrk_prefix-large.h 2019-11-13 17:42:32.061525379 -0500 > +++ gcc/testsuite/gcc.target/powerpc/prefix-large.h 2019-11-13 > 17:42:31.775522804 -0500 > @@ -0,0 +1,59 @@ > +/* Common tests for prefixed instructions testing whether we can generate a > + 34-bit offset using 1 instruction. */ > + > +typedef signed char schar; > +typedef unsigned char uchar; > +typedef unsigned short ushort; > +typedef unsigned int uint; > +typedef unsigned long ulong; > +typedef long double ldouble; "long double" isn't a specific type, not without other setup, but you never use this one anyway. Well, none of these typedefs at all? So just remove it all please. > +typedef vector double v2df; > +typedef vector long v2di; > +typedef vector float v4sf; > +typedef vector int v4si; > +#ifndef TYPE > +#define TYPE ulong > +#endif (So adjust this one then). Segher