[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