Commit 392d2ff3 by Segher Boessenkool Committed by Segher Boessenkool

rs6000: Improve p9-dimode* testcases

This removes the unnecessary restriction to 32-bit (all three ways).
It also scans for mtvsr*, not just mtvsrd.  Finally, it uses the "wa"
constraints instead of "wi" in the inline asm statements.


gcc/testsuite/
	* gcc.target/powerpc/p9-dimode1.c: Don't restrict to -m64.  Check for
	all mtvsr*, not just mtvsrd.  Use "wa" instead of "wi" constraints.
	* gcc.target/powerpc/p9-dimode2.c: Ditto.

From-SVN: r271696
parent 8d2a3107
2019-05-28 Segher Boessenkool <segher@kernel.crashing.org>
* gcc.target/powerpc/p9-dimode1.c: Don't restrict to -m64. Check for
all mtvsr*, not just mtvsrd. Use "wa" instead of "wi" constraints.
* gcc.target/powerpc/p9-dimode2.c: Ditto.
2019-05-28 Martin Liska <mliska@suse.cz> 2019-05-28 Martin Liska <mliska@suse.cz>
PR ipa/90555 PR ipa/90555
......
/* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */ /* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-options "-mdejagnu-cpu=power9 -O2" } */ /* { dg-options "-mdejagnu-cpu=power9 -O2" } */
/* Verify P9 changes to allow DImode into Altivec registers, and generate /* Verify P9 changes to allow DImode into Altivec registers, and generate
constants using XXSPLTIB. */ constants using XXSPLTIB. */
#ifndef _ARCH_PPC64
#error "This code is 64-bit."
#endif
double double
p9_zero (void) p9_zero (void)
{ {
long l = 0; long l = 0;
double ret; double ret;
__asm__ ("xxlor %x0,%x1,%x1" : "=&d" (ret) : "wi" (l)); __asm__ ("xxlor %x0,%x1,%x1" : "=&d" (ret) : "wa" (l));
return ret; return ret;
} }
...@@ -26,7 +22,7 @@ p9_plus_1 (void) ...@@ -26,7 +22,7 @@ p9_plus_1 (void)
long l = 1; long l = 1;
double ret; double ret;
__asm__ ("xxlor %x0,%x1,%x1" : "=&d" (ret) : "wi" (l)); __asm__ ("xxlor %x0,%x1,%x1" : "=&d" (ret) : "wa" (l));
return ret; return ret;
} }
...@@ -37,13 +33,13 @@ p9_minus_1 (void) ...@@ -37,13 +33,13 @@ p9_minus_1 (void)
long l = -1; long l = -1;
double ret; double ret;
__asm__ ("xxlor %x0,%x1,%x1" : "=&d" (ret) : "wi" (l)); __asm__ ("xxlor %x0,%x1,%x1" : "=&d" (ret) : "wa" (l));
return ret; return ret;
} }
/* { dg-final { scan-assembler {\mxxspltib\M} } } */ /* { dg-final { scan-assembler {\mxxspltib\M} } } */
/* { dg-final { scan-assembler-not {\mmtvsrd\M} } } */ /* { dg-final { scan-assembler-not {\mmtvsr} } } */
/* { dg-final { scan-assembler-not {\mlfd\M} } } */ /* { dg-final { scan-assembler-not {\mlfd\M} } } */
/* { dg-final { scan-assembler-not {\mld\M} } } */ /* { dg-final { scan-assembler-not {\mld\M} } } */
/* { dg-final { scan-assembler-not {\mlxsd\M} } } */ /* { dg-final { scan-assembler-not {\mlxsd\M} } } */
/* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */ /* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-options "-mdejagnu-cpu=power9 -O2" } */ /* { dg-options "-mdejagnu-cpu=power9 -O2" } */
/* Verify that large integer constants are loaded via direct move instead of being /* Verify that large integer constants are loaded via direct move instead of
loaded from memory. */ being loaded from memory. */
#ifndef _ARCH_PPC64
#error "This code is 64-bit."
#endif
double double
p9_large (void) p9_large (void)
...@@ -15,12 +11,12 @@ p9_large (void) ...@@ -15,12 +11,12 @@ p9_large (void)
long l = 0x12345678; long l = 0x12345678;
double ret; double ret;
__asm__ ("xxlor %x0,%x1,%x1" : "=&d" (ret) : "wi" (l)); __asm__ ("xxlor %x0,%x1,%x1" : "=&d" (ret) : "wa" (l));
return ret; return ret;
} }
/* { dg-final { scan-assembler {\mmtvsrd\M} } } */ /* { dg-final { scan-assembler {\mmtvsr} } } */
/* { dg-final { scan-assembler-not {\mld\M} } } */ /* { dg-final { scan-assembler-not {\mld\M} } } */
/* { dg-final { scan-assembler-not {\mlfd\M} } } */ /* { dg-final { scan-assembler-not {\mlfd\M} } } */
/* { dg-final { scan-assembler-not {\mlxsd\M} } } */ /* { dg-final { scan-assembler-not {\mlxsd\M} } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment