public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [committed] Fix umips-lwp-*.c tests
@ 2014-07-17 20:17 Richard Sandiford
  0 siblings, 0 replies; only message in thread
From: Richard Sandiford @ 2014-07-17 20:17 UTC (permalink / raw)
  To: gcc-patches

umips-lwp-[1234].c test that two loads from consecutive memory locations
to consecutive registers ($5 and $6) can use LWP.  The idea was to have
2 tests where $5 was loaded first before $6 and 2 tests that were the
other way around (at least when scheduling is enabled).  I'd tried to force
that by having one register involved in multiplication and so obviously
on the critical path.  However, the multiplication and store now happen
before the load of the other register, which defeats the point of the
thing and makes the test fail.

Here I've used a shift and add sequence instead, after verifying that
the pre-peephole2 orderings are still different for 1,3 vs. 2,4.

Tested on mips64-linux-gnu and applied.

Thanks,
Richard


gcc/testsuite/
	* gcc.target/mips/umips-lwp-1.c (foo): Use a shift/add sequence
	involving both inputs rather than a multiplication involving one.
	* gcc.target/mips/umips-lwp-2.c (foo): Likewise.
	* gcc.target/mips/umips-lwp-3.c (foo): Likewise.
	* gcc.target/mips/umips-lwp-4.c (foo): Likewise.

Index: gcc/testsuite/gcc.target/mips/umips-lwp-1.c
===================================================================
--- gcc/testsuite/gcc.target/mips/umips-lwp-1.c	2014-07-17 20:17:43.255936742 +0100
+++ gcc/testsuite/gcc.target/mips/umips-lwp-1.c	2014-07-17 20:27:46.543603109 +0100
@@ -6,7 +6,7 @@ foo (int *r4)
 {
   int r5 = r4[0];
   int r6 = r4[1];
-  r4[2] = r5 * r5;
+  r4[2] = (r5 << 1) + r6;
   {
     register int r5asm asm ("$5") = r5;
     register int r6asm asm ("$6") = r6;
Index: gcc/testsuite/gcc.target/mips/umips-lwp-2.c
===================================================================
--- gcc/testsuite/gcc.target/mips/umips-lwp-2.c	2014-04-25 10:40:00.806595073 +0100
+++ gcc/testsuite/gcc.target/mips/umips-lwp-2.c	2014-07-17 20:28:03.451761888 +0100
@@ -6,7 +6,7 @@ foo (int *r4)
 {
   int r5 = r4[0];
   int r6 = r4[1];
-  r4[2] = r6 * r6;
+  r4[2] = (r6 << 1) + r5;
   {
     register int r5asm asm ("$5") = r5;
     register int r6asm asm ("$6") = r6;
Index: gcc/testsuite/gcc.target/mips/umips-lwp-3.c
===================================================================
--- gcc/testsuite/gcc.target/mips/umips-lwp-3.c	2014-04-25 10:40:00.995596575 +0100
+++ gcc/testsuite/gcc.target/mips/umips-lwp-3.c	2014-07-17 20:28:38.133087563 +0100
@@ -6,7 +6,7 @@ foo (int *r4)
 {
   int r5 = r4[511];
   int r6 = r4[512];
-  r4[2] = r5 * r5;
+  r4[2] = (r5 << 1) + r6;
   {
     register int r5asm asm ("$5") = r5;
     register int r6asm asm ("$6") = r6;
Index: gcc/testsuite/gcc.target/mips/umips-lwp-4.c
===================================================================
--- gcc/testsuite/gcc.target/mips/umips-lwp-4.c	2014-04-25 10:40:01.222598380 +0100
+++ gcc/testsuite/gcc.target/mips/umips-lwp-4.c	2014-07-17 20:28:46.754168518 +0100
@@ -6,7 +6,7 @@ foo (int *r4)
 {
   int r5 = r4[511];
   int r6 = r4[512];
-  r4[2] = r6 * r6;
+  r4[2] = (r6 << 1) + r5;
   {
     register int r5asm asm ("$5") = r5;
     register int r6asm asm ("$6") = r6;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-07-17 19:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-17 20:17 [committed] Fix umips-lwp-*.c tests Richard Sandiford

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).