On 10/07/15 21:21, James Greenhalgh wrote:
On Fri, Jul 10, 2015 at 01:21:05PM +0100, Kyrill Tkachov wrote:
Hi all,
Some of the testcases in aarch64.exp can fail their scan-assembler patterns
if if-conversion becomes more aggressive.
This patch adjusts the testcases in case the branches are eliminated and
further optimisations occur that may remove the scan-assembler patterns.
With this patch the patterns are always generated and the expected execute
values are updated.
Tests still pass on aarch64.
Ok for trunk?
This is OK. Please address my one comment below (looks like you left some
#if 0 kicking around in adds1.c) and fix the ChangeLog to include the
gcc.target/aarch64/adds1.c changes.
Thanks for spotting that, I'm attaching the patch I committed with r225732
and the below ChangeLog entry.
2015-07-13 Kyrylo Tkachov <kyrylo.tkac...@arm.com>
* gcc.target/aarch64/adds3.c: Adjust for more aggressive
if-conversion..
* gcc.target/aarch64/adds1.c: Likewise.
* gcc.target/aarch64/ands_1.c: Likewise.
* gcc.target/aarch64/bics_1.c: Likewise.
* gcc.target/aarch64/subs1.c: Likewise.
* gcc.target/aarch64/subs3.c: Likewise.
Thanks,
Kyrill
Thanks,
James
Index: gcc/testsuite/gcc.target/aarch64/ands_1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/ands_1.c (revision 225731)
+++ gcc/testsuite/gcc.target/aarch64/ands_1.c (working copy)
@@ -12,7 +12,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -24,7 +24,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -36,7 +36,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
typedef long long s64;
@@ -50,7 +50,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
s64
@@ -62,7 +62,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
s64
@@ -74,7 +74,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -84,7 +84,7 @@
s64 y;
x = ands_si_test1 (29, 4, 5);
- if (x != 13)
+ if (x != (29 & 4))
abort ();
x = ands_si_test1 (5, 2, 20);
@@ -92,7 +92,7 @@
abort ();
x = ands_si_test2 (29, 4, 5);
- if (x != 38)
+ if (x != (29 & 0xff))
abort ();
x = ands_si_test2 (1024, 2, 20);
@@ -100,7 +100,7 @@
abort ();
x = ands_si_test3 (35, 4, 5);
- if (x != 41)
+ if (x != (35 & (4 << 3)))
abort ();
x = ands_si_test3 (5, 2, 20);
@@ -111,7 +111,7 @@
0x320000004ll,
0x505050505ll);
- if (y != ((0x130000029ll & 0x320000004ll) + 0x320000004ll + 0x505050505ll))
+ if (y != ((0x130000029ll & 0x320000004ll)))
abort ();
y = ands_di_test1 (0x5000500050005ll,
@@ -123,7 +123,7 @@
y = ands_di_test2 (0x130000029ll,
0x320000004ll,
0x505050505ll);
- if (y != ((0x130000029ll & 0xff) + 0x320000004ll + 0x505050505ll))
+ if (y != ((0x130000029ll & 0xff)))
abort ();
y = ands_di_test2 (0x130002900ll,
@@ -135,8 +135,7 @@
y = ands_di_test3 (0x130000029ll,
0x064000008ll,
0x505050505ll);
- if (y != ((0x130000029ll & (0x064000008ll << 3))
- + 0x064000008ll + 0x505050505ll))
+ if (y != ((0x130000029ll & (0x064000008ll << 3))))
abort ();
y = ands_di_test3 (0x130002900ll,
Index: gcc/testsuite/gcc.target/aarch64/subs3.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/subs3.c (revision 225731)
+++ gcc/testsuite/gcc.target/aarch64/subs3.c (working copy)
@@ -12,7 +12,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -23,7 +23,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int main ()
@@ -32,27 +32,27 @@
s64 y;
x = subs_ext (0x13000002ll, 41, 15);
- if (x != 318767121)
+ if (x != (int)(0x13000002ll - 41))
abort ();
- x = subs_ext (0x50505050ll, 29, 4);
- if (x != 1347440724)
+ x = subs_ext (0x50505050ll, 0x50505050ll, 4);
+ if (x != (int)(0x50505050ll + 4))
abort ();
x = subs_ext (0x12121212121ll, 2, 14);
- if (x != 555819311)
+ if (x != (int)(0x12121212121ll - 2))
abort ();
x = subs_shift_ext (0x123456789ll, 4, 12);
- if (x != 591751033)
+ if (x != (int)(0x123456789ll - (4 << 3)))
abort ();
- x = subs_shift_ext (0x02020202ll, 9, 8);
- if (x != 33685963)
+ x = subs_shift_ext (0x02020202ll << 3, 0x02020202ll, 8);
+ if (x != (int)(8 + (0x02020202ll << 3)))
abort ();
x = subs_shift_ext (0x987987987987ll, 23, 41);
- if (x != -2020050673)
+ if (x != (int)(0x987987987987ll - (23 << 3)))
abort ();
return 0;
Index: gcc/testsuite/gcc.target/aarch64/adds1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/adds1.c (revision 225731)
+++ gcc/testsuite/gcc.target/aarch64/adds1.c (working copy)
@@ -12,7 +12,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -24,7 +24,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -36,7 +36,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
typedef long long s64;
@@ -50,7 +50,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
s64
@@ -62,7 +62,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
s64
@@ -74,7 +74,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int main ()
@@ -83,64 +83,64 @@
s64 y;
x = adds_si_test1 (29, 4, 5);
- if (x != 42)
+ if (x != (29 + 4))
abort ();
- x = adds_si_test1 (5, 2, 20);
- if (x != 29)
+ x = adds_si_test1 (5, 2, -5);
+ if (x != 7)
abort ();
x = adds_si_test2 (29, 4, 5);
- if (x != 293)
+ if (x != (29 + 0xff))
abort ();
- x = adds_si_test2 (1024, 2, 20);
- if (x != 1301)
+ x = adds_si_test2 (-255, 2, 20);
+ if (x != -235)
abort ();
x = adds_si_test3 (35, 4, 5);
- if (x != 76)
+ if (x != (35 + (4 << 3)))
abort ();
- x = adds_si_test3 (5, 2, 20);
- if (x != 43)
+ x = adds_si_test3 (-(2 << 3), 2, 20);
+ if (x != (20 - (2 << 3)))
abort ();
y = adds_di_test1 (0x130000029ll,
0x320000004ll,
0x505050505ll);
- if (y != 0xc75050536)
+ if (y != (0x130000029ll + 0x320000004ll))
abort ();
y = adds_di_test1 (0x5000500050005ll,
- 0x2111211121112ll,
+ -0x5000500050005ll,
0x0000000002020ll);
- if (y != 0x9222922294249)
+ if (y != (0x5000500050005ll + 0x0000000002020ll))
abort ();
y = adds_di_test2 (0x130000029ll,
0x320000004ll,
0x505050505ll);
- if (y != 0x955050631)
+ if (y != (0x130000029ll + 0xff))
abort ();
- y = adds_di_test2 (0x130002900ll,
+ y = adds_di_test2 (-0xff,
0x320000004ll,
0x505050505ll);
- if (y != 0x955052f08)
+ if (y != (0x505050505ll - 0xff))
abort ();
y = adds_di_test3 (0x130000029ll,
0x064000008ll,
0x505050505ll);
- if (y != 0x9b9050576)
+ if (y != (0x130000029ll + (0x064000008ll << 3)))
abort ();
y = adds_di_test3 (0x130002900ll,
- 0x088000008ll,
+ -(0x130002900ll >> 3),
0x505050505ll);
- if (y != 0xafd052e4d)
+ if (y != (0x130002900ll + 0x505050505ll))
abort ();
return 0;
Index: gcc/testsuite/gcc.target/aarch64/bics_1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/bics_1.c (revision 225731)
+++ gcc/testsuite/gcc.target/aarch64/bics_1.c (working copy)
@@ -12,7 +12,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -24,7 +24,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
typedef long long s64;
@@ -38,7 +38,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
s64
@@ -50,7 +50,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -60,7 +60,7 @@
s64 y;
x = bics_si_test1 (29, ~4, 5);
- if (x != ((29 & 4) + ~4 + 5))
+ if (x != (29 & 4))
abort ();
x = bics_si_test1 (5, ~2, 20);
@@ -68,7 +68,7 @@
abort ();
x = bics_si_test2 (35, ~4, 5);
- if (x != ((35 & ~(~4 << 3)) + ~4 + 5))
+ if (x != (35 & ~(~4 << 3)))
abort ();
x = bics_si_test2 (96, ~2, 20);
@@ -79,7 +79,7 @@
~0x320000004ll,
0x505050505ll);
- if (y != ((0x130000029ll & 0x320000004ll) + ~0x320000004ll + 0x505050505ll))
+ if (y != (0x130000029ll & 0x320000004ll))
abort ();
y = bics_di_test1 (0x5000500050005ll,
@@ -91,8 +91,7 @@
y = bics_di_test2 (0x130000029ll,
~0x064000008ll,
0x505050505ll);
- if (y != ((0x130000029ll & ~(~0x064000008ll << 3))
- + ~0x064000008ll + 0x505050505ll))
+ if (y != (0x130000029ll & ~(~0x064000008ll << 3)))
abort ();
y = bics_di_test2 (0x130002900ll,
@@ -103,4 +102,3 @@
return 0;
}
-
Index: gcc/testsuite/gcc.target/aarch64/adds3.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/adds3.c (revision 225731)
+++ gcc/testsuite/gcc.target/aarch64/adds3.c (working copy)
@@ -12,7 +12,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -23,7 +23,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int main ()
@@ -32,27 +32,27 @@
s64 y;
x = adds_ext (0x13000002ll, 41, 15);
- if (x != 318767203)
+ if (x != (int)(0x13000002ll + 41))
abort ();
- x = adds_ext (0x50505050ll, 29, 4);
- if (x != 1347440782)
+ x = adds_ext (0x50505050ll, -0x50505050ll, 4);
+ if (x != (int)(0x50505050ll + 4))
abort ();
x = adds_ext (0x12121212121ll, 2, 14);
- if (x != 555819315)
+ if (x != (int)(0x12121212121ll + 2))
abort ();
x = adds_shift_ext (0x123456789ll, 4, 12);
- if (x != 591751097)
+ if (x != (int)(0x123456789ll + (4 << 3)))
abort ();
- x = adds_shift_ext (0x02020202ll, 9, 8);
- if (x != 33686107)
+ x = adds_shift_ext (-(0x02020202ll << 3), 0x02020202ll, 8);
+ if (x != (int)(8 - (0x02020202ll << 3)))
abort ();
x = adds_shift_ext (0x987987987987ll, 23, 41);
- if (x != -2020050305)
+ if (x != (int)(0x987987987987ll + (23 << 3)))
abort ();
return 0;
Index: gcc/testsuite/gcc.target/aarch64/subs1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/subs1.c (revision 225731)
+++ gcc/testsuite/gcc.target/aarch64/subs1.c (working copy)
@@ -12,7 +12,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -24,7 +24,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int
@@ -36,7 +36,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
typedef long long s64;
@@ -50,7 +50,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
s64
@@ -62,7 +62,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
s64
@@ -74,7 +74,7 @@
if (d == 0)
return a + c;
else
- return b + d + c;
+ return d;
}
int main ()
@@ -83,64 +83,64 @@
s64 y;
x = subs_si_test1 (29, 4, 5);
- if (x != 33)
+ if (x != 24)
abort ();
- x = subs_si_test1 (5, 2, 20);
- if (x != 7)
+ x = subs_si_test1 (20, 2, 20);
+ if (x != 40)
abort ();
- x = subs_si_test2 (29, 4, 5);
- if (x != -217)
- abort ();
+ x = subs_si_test2 (0xff, 4, 5);
+ if (x != (0xff + 5))
+ abort ();
- x = subs_si_test2 (1024, 2, 20);
- if (x != 791)
- abort ();
+ x = subs_si_test2 (1024, 2, 20);
+ if (x != (1024 - 0xff))
+ abort ();
x = subs_si_test3 (35, 4, 5);
- if (x != 12)
+ if (x != 35 - (4 << 3))
abort ();
- x = subs_si_test3 (5, 2, 20);
- if (x != 11)
+ x = subs_si_test3 (5 << 3, 5, 20);
+ if (x != (20 + (5 << 3)))
abort ();
y = subs_di_test1 (0x130000029ll,
0x320000004ll,
0x505050505ll);
- if (y != 0x45000002d)
+ if (y != (0x130000029ll - 0x505050505ll))
abort ();
y = subs_di_test1 (0x5000500050005ll,
0x2111211121112ll,
- 0x0000000002020ll);
- if (y != 0x7111711171117)
+ 0x5000500050005ll);
+ if (y != (0x5000500050005ll + 0x5000500050005ll))
abort ();
y = subs_di_test2 (0x130000029ll,
0x320000004ll,
0x505050505ll);
- if (y != 0x955050433)
+ if (y != (0x130000029ll - 0xff))
abort ();
- y = subs_di_test2 (0x130002900ll,
+ y = subs_di_test2 (0xff,
0x320000004ll,
0x505050505ll);
- if (y != 0x955052d0a)
+ if (y != (0xff + 0x505050505ll))
abort ();
y = subs_di_test3 (0x130000029ll,
0x064000008ll,
0x505050505ll);
- if (y != 0x3790504f6)
+ if (y != (0x130000029ll - (0x064000008ll << 3)))
abort ();
- y = subs_di_test3 (0x130002900ll,
- 0x088000008ll,
+ y = subs_di_test3 (0x130002900ll << 3,
+ 0x130002900ll,
0x505050505ll);
- if (y != 0x27d052dcd)
+ if (y != (0x505050505ll + (0x130002900ll << 3)))
abort ();
return 0;
Index: gcc/testsuite/ChangeLog
===================================================================
--- gcc/testsuite/ChangeLog (revision 225731)
+++ gcc/testsuite/ChangeLog (working copy)
@@ -1,3 +1,13 @@
+2015-07-13 Kyrylo Tkachov <kyrylo.tkac...@arm.com>
+
+ * gcc.target/aarch64/adds3.c: Adjust for more aggressive
+ if-conversion..
+ * gcc.target/aarch64/adds1.c: Likewise.
+ * gcc.target/aarch64/ands_1.c: Likewise.
+ * gcc.target/aarch64/bics_1.c: Likewise.
+ * gcc.target/aarch64/subs1.c: Likewise.
+ * gcc.target/aarch64/subs3.c: Likewise.
+
2015-07-13 Andre Vehreschild <ve...@gcc.gnu.org>
PR fortran/64589