[PATCH], V8, #4 of 6, Testsuite: Test for prefixed instructions with large offsets

Segher Boessenkool segher@kernel.crashing.org
Mon Dec 2 20:19:00 GMT 2019


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



More information about the Gcc-patches mailing list