aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-10-24 15:01:45 +0000
committerRichard Biener <rguenther@suse.de>2019-10-24 15:01:45 +0000
commit85059c70fa4dc13ae2b44a14465f6ef8706dfd78 (patch)
tree575af1eed28449217962628ae5ea192898d39358 /gcc/testsuite
parentc364dc72932961ddfd15f7dd5c146a45cde2743b (diff)
2019-10-24 Richard Biener <rguenther@suse.de>
* tree-vect-slp.c (vect_get_and_check_slp_defs): For reduction chains try harder with operand swapping and instead of putting a shifted chain into the reduction operands put a repetition of the final reduction op there as if we'd reassociate the expression. * gcc.dg/vect/slp-reduc-10a.c: New testcase. * gcc.dg/vect/slp-reduc-10b.c: Likewise. * gcc.dg/vect/slp-reduc-10c.c: Likewise. * gcc.dg/vect/slp-reduc-10d.c: Likewise. * gcc.dg/vect/slp-reduc-10e.c: Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@277406 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c82
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c82
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c82
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c82
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c82
6 files changed, 418 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ee43703ea54..329f244474f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2019-10-24 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/slp-reduc-10a.c: New testcase.
+ * gcc.dg/vect/slp-reduc-10b.c: Likewise.
+ * gcc.dg/vect/slp-reduc-10c.c: Likewise.
+ * gcc.dg/vect/slp-reduc-10d.c: Likewise.
+ * gcc.dg/vect/slp-reduc-10e.c: Likewise.
+
2019-10-24 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* gcc.target/msp430/emulate-slli.c: Skip for -mcpu=msp430.
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c
new file mode 100644
index 00000000000..d3c2c2d7f54
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c
@@ -0,0 +1,82 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+/* { dg-additional-options "-fgimple" } */
+
+int __GIMPLE (ssa,guessed_local(118111600),startwith("dce3"))
+foo (int * x, int n)
+{
+ int i;
+ int sum;
+ int _1;
+ long unsigned int _2;
+ long unsigned int _3;
+ int * _4;
+ int _5;
+ __SIZETYPE__ _7;
+ __SIZETYPE__ _8;
+ int * _9;
+ int _10;
+ __SIZETYPE__ _11;
+ __SIZETYPE__ _12;
+ int * _13;
+ int _14;
+ __SIZETYPE__ _15;
+ __SIZETYPE__ _16;
+ int * _17;
+ int _18;
+
+ __BB(2,guessed_local(118111600)):
+ if (n_21(D) > 0)
+ goto __BB5(guessed(119453778));
+ else
+ goto __BB7(guessed(14763950));
+
+ __BB(5,guessed_local(105119324)):
+ goto __BB3(precise(134217728));
+
+ __BB(3,loop_header(1),guessed_local(955630224)):
+ sum_30 = __PHI (__BB5: 0, __BB6: sum_27);
+ i_32 = __PHI (__BB5: 0, __BB6: i_28);
+ _1 = i_32 * 4;
+ _2 = (long unsigned int) _1;
+ _3 = _2 * 4ul;
+ _4 = x_23(D) + _3;
+ _5 = __MEM <int> (_4);
+ sum_24 = _5 + sum_30;
+ _7 = _2 + 1ul;
+ _8 = _7 * 4ul;
+ _9 = x_23(D) + _8;
+ _10 = __MEM <int> (_9);
+ sum_25 = _10 + sum_24;
+ _11 = _2 + 2ul;
+ _12 = _11 * 4ul;
+ _13 = x_23(D) + _12;
+ _14 = __MEM <int> (_13);
+ sum_26 = _14 + sum_25;
+ _15 = _2 + 3ul;
+ _16 = _15 * 4ul;
+ _17 = x_23(D) + _16;
+ _18 = __MEM <int> (_17);
+ sum_27 = _18 + sum_26;
+ i_28 = i_32 + 1;
+ if (n_21(D) > i_28)
+ goto __BB6(guessed(119453778));
+ else
+ goto __BB8(guessed(14763950));
+
+ __BB(8,guessed_local(105119324)):
+ goto __BB4(precise(134217728));
+
+ __BB(6,guessed_local(850510900)):
+ goto __BB3(precise(134217728));
+
+ __BB(7,guessed_local(12992276)):
+ goto __BB4(precise(134217728));
+
+ __BB(4,guessed_local(118111601)):
+ sum_31 = __PHI (__BB7: 0, __BB8: sum_27);
+ return sum_31;
+
+}
+
+/* { dg-final { scan-tree-dump "Decided to SLP 1 instances" "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c
new file mode 100644
index 00000000000..6a0d55def30
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10b.c
@@ -0,0 +1,82 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+/* { dg-additional-options "-fgimple" } */
+
+int __GIMPLE (ssa,guessed_local(118111600),startwith("dce3"))
+foo (int * x, int n)
+{
+ int i;
+ int sum;
+ int _1;
+ long unsigned int _2;
+ long unsigned int _3;
+ int * _4;
+ int _5;
+ __SIZETYPE__ _7;
+ __SIZETYPE__ _8;
+ int * _9;
+ int _100;
+ __SIZETYPE__ _11;
+ __SIZETYPE__ _12;
+ int * _13;
+ int _14;
+ __SIZETYPE__ _15;
+ __SIZETYPE__ _16;
+ int * _17;
+ int _18;
+
+ __BB(2,guessed_local(118111600)):
+ if (n_21(D) > 0)
+ goto __BB5(guessed(119453778));
+ else
+ goto __BB7(guessed(14763950));
+
+ __BB(5,guessed_local(105119324)):
+ goto __BB3(precise(134217728));
+
+ __BB(3,loop_header(1),guessed_local(955630224)):
+ sum_30 = __PHI (__BB5: 0, __BB6: sum_27);
+ i_32 = __PHI (__BB5: 0, __BB6: i_28);
+ _1 = i_32 * 4;
+ _2 = (long unsigned int) _1;
+ _3 = _2 * 4ul;
+ _4 = x_23(D) + _3;
+ _5 = __MEM <int> (_4);
+ sum_24 = _5 + sum_30;
+ _7 = _2 + 1ul;
+ _8 = _7 * 4ul;
+ _9 = x_23(D) + _8;
+ _100 = __MEM <int> (_9);
+ sum_25 = sum_24 + _100;
+ _11 = _2 + 2ul;
+ _12 = _11 * 4ul;
+ _13 = x_23(D) + _12;
+ _14 = __MEM <int> (_13);
+ sum_26 = _14 + sum_25;
+ _15 = _2 + 3ul;
+ _16 = _15 * 4ul;
+ _17 = x_23(D) + _16;
+ _18 = __MEM <int> (_17);
+ sum_27 = _18 + sum_26;
+ i_28 = i_32 + 1;
+ if (n_21(D) > i_28)
+ goto __BB6(guessed(119453778));
+ else
+ goto __BB8(guessed(14763950));
+
+ __BB(8,guessed_local(105119324)):
+ goto __BB4(precise(134217728));
+
+ __BB(6,guessed_local(850510900)):
+ goto __BB3(precise(134217728));
+
+ __BB(7,guessed_local(12992276)):
+ goto __BB4(precise(134217728));
+
+ __BB(4,guessed_local(118111601)):
+ sum_31 = __PHI (__BB7: 0, __BB8: sum_27);
+ return sum_31;
+
+}
+
+/* { dg-final { scan-tree-dump "Decided to SLP 1 instances" "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c
new file mode 100644
index 00000000000..20df2626764
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10c.c
@@ -0,0 +1,82 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+/* { dg-additional-options "-fgimple" } */
+
+int __GIMPLE (ssa,guessed_local(118111600),startwith("dce3"))
+foo (int * x, int n)
+{
+ int i;
+ int sum;
+ int _1;
+ long unsigned int _2;
+ long unsigned int _3;
+ int * _4;
+ int _5;
+ __SIZETYPE__ _7;
+ __SIZETYPE__ _8;
+ int * _9;
+ int _10;
+ __SIZETYPE__ _11;
+ __SIZETYPE__ _12;
+ int * _13;
+ int _100;
+ __SIZETYPE__ _15;
+ __SIZETYPE__ _16;
+ int * _17;
+ int _18;
+
+ __BB(2,guessed_local(118111600)):
+ if (n_21(D) > 0)
+ goto __BB5(guessed(119453778));
+ else
+ goto __BB7(guessed(14763950));
+
+ __BB(5,guessed_local(105119324)):
+ goto __BB3(precise(134217728));
+
+ __BB(3,loop_header(1),guessed_local(955630224)):
+ sum_30 = __PHI (__BB5: 0, __BB6: sum_27);
+ i_32 = __PHI (__BB5: 0, __BB6: i_28);
+ _1 = i_32 * 4;
+ _2 = (long unsigned int) _1;
+ _3 = _2 * 4ul;
+ _4 = x_23(D) + _3;
+ _5 = __MEM <int> (_4);
+ sum_24 = _5 + sum_30;
+ _7 = _2 + 1ul;
+ _8 = _7 * 4ul;
+ _9 = x_23(D) + _8;
+ _10 = __MEM <int> (_9);
+ sum_25 = _10 + sum_24;
+ _11 = _2 + 2ul;
+ _12 = _11 * 4ul;
+ _13 = x_23(D) + _12;
+ _100 = __MEM <int> (_13);
+ sum_26 = sum_25 + _100;
+ _15 = _2 + 3ul;
+ _16 = _15 * 4ul;
+ _17 = x_23(D) + _16;
+ _18 = __MEM <int> (_17);
+ sum_27 = _18 + sum_26;
+ i_28 = i_32 + 1;
+ if (n_21(D) > i_28)
+ goto __BB6(guessed(119453778));
+ else
+ goto __BB8(guessed(14763950));
+
+ __BB(8,guessed_local(105119324)):
+ goto __BB4(precise(134217728));
+
+ __BB(6,guessed_local(850510900)):
+ goto __BB3(precise(134217728));
+
+ __BB(7,guessed_local(12992276)):
+ goto __BB4(precise(134217728));
+
+ __BB(4,guessed_local(118111601)):
+ sum_31 = __PHI (__BB7: 0, __BB8: sum_27);
+ return sum_31;
+
+}
+
+/* { dg-final { scan-tree-dump "Decided to SLP 1 instances" "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c
new file mode 100644
index 00000000000..8a512d5c14d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10d.c
@@ -0,0 +1,82 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+/* { dg-additional-options "-fgimple" } */
+
+int __GIMPLE (ssa,guessed_local(118111600),startwith("dce3"))
+foo (int * x, int n)
+{
+ int i;
+ int sum;
+ int _1;
+ long unsigned int _2;
+ long unsigned int _3;
+ int * _4;
+ int _5;
+ __SIZETYPE__ _7;
+ __SIZETYPE__ _8;
+ int * _9;
+ int _10;
+ __SIZETYPE__ _11;
+ __SIZETYPE__ _12;
+ int * _13;
+ int _14;
+ __SIZETYPE__ _15;
+ __SIZETYPE__ _16;
+ int * _17;
+ int _100;
+
+ __BB(2,guessed_local(118111600)):
+ if (n_21(D) > 0)
+ goto __BB5(guessed(119453778));
+ else
+ goto __BB7(guessed(14763950));
+
+ __BB(5,guessed_local(105119324)):
+ goto __BB3(precise(134217728));
+
+ __BB(3,loop_header(1),guessed_local(955630224)):
+ sum_30 = __PHI (__BB5: 0, __BB6: sum_27);
+ i_32 = __PHI (__BB5: 0, __BB6: i_28);
+ _1 = i_32 * 4;
+ _2 = (long unsigned int) _1;
+ _3 = _2 * 4ul;
+ _4 = x_23(D) + _3;
+ _5 = __MEM <int> (_4);
+ sum_24 = _5 + sum_30;
+ _7 = _2 + 1ul;
+ _8 = _7 * 4ul;
+ _9 = x_23(D) + _8;
+ _10 = __MEM <int> (_9);
+ sum_25 = _10 + sum_24;
+ _11 = _2 + 2ul;
+ _12 = _11 * 4ul;
+ _13 = x_23(D) + _12;
+ _14 = __MEM <int> (_13);
+ sum_26 = _14 + sum_25;
+ _15 = _2 + 3ul;
+ _16 = _15 * 4ul;
+ _17 = x_23(D) + _16;
+ _100 = __MEM <int> (_17);
+ sum_27 = sum_26 + _100;
+ i_28 = i_32 + 1;
+ if (n_21(D) > i_28)
+ goto __BB6(guessed(119453778));
+ else
+ goto __BB8(guessed(14763950));
+
+ __BB(8,guessed_local(105119324)):
+ goto __BB4(precise(134217728));
+
+ __BB(6,guessed_local(850510900)):
+ goto __BB3(precise(134217728));
+
+ __BB(7,guessed_local(12992276)):
+ goto __BB4(precise(134217728));
+
+ __BB(4,guessed_local(118111601)):
+ sum_31 = __PHI (__BB7: 0, __BB8: sum_27);
+ return sum_31;
+
+}
+
+/* { dg-final { scan-tree-dump "Decided to SLP 1 instances" "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c
new file mode 100644
index 00000000000..268ec9db77d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-10e.c
@@ -0,0 +1,82 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+/* { dg-additional-options "-fgimple" } */
+
+int __GIMPLE (ssa,guessed_local(118111600),startwith("dce3"))
+foo (int * x, int n)
+{
+ int i;
+ int sum;
+ int _1;
+ long unsigned int _2;
+ long unsigned int _3;
+ int * _4;
+ int _100;
+ __SIZETYPE__ _7;
+ __SIZETYPE__ _8;
+ int * _9;
+ int _10;
+ __SIZETYPE__ _11;
+ __SIZETYPE__ _12;
+ int * _13;
+ int _14;
+ __SIZETYPE__ _15;
+ __SIZETYPE__ _16;
+ int * _17;
+ int _18;
+
+ __BB(2,guessed_local(118111600)):
+ if (n_21(D) > 0)
+ goto __BB5(guessed(119453778));
+ else
+ goto __BB7(guessed(14763950));
+
+ __BB(5,guessed_local(105119324)):
+ goto __BB3(precise(134217728));
+
+ __BB(3,loop_header(1),guessed_local(955630224)):
+ sum_30 = __PHI (__BB5: 0, __BB6: sum_27);
+ i_32 = __PHI (__BB5: 0, __BB6: i_28);
+ _1 = i_32 * 4;
+ _2 = (long unsigned int) _1;
+ _3 = _2 * 4ul;
+ _4 = x_23(D) + _3;
+ _100 = __MEM <int> (_4);
+ sum_24 = sum_30 + _100;
+ _7 = _2 + 1ul;
+ _8 = _7 * 4ul;
+ _9 = x_23(D) + _8;
+ _10 = __MEM <int> (_9);
+ sum_25 = _10 + sum_24;
+ _11 = _2 + 2ul;
+ _12 = _11 * 4ul;
+ _13 = x_23(D) + _12;
+ _14 = __MEM <int> (_13);
+ sum_26 = _14 + sum_25;
+ _15 = _2 + 3ul;
+ _16 = _15 * 4ul;
+ _17 = x_23(D) + _16;
+ _18 = __MEM <int> (_17);
+ sum_27 = _18 + sum_26;
+ i_28 = i_32 + 1;
+ if (n_21(D) > i_28)
+ goto __BB6(guessed(119453778));
+ else
+ goto __BB8(guessed(14763950));
+
+ __BB(8,guessed_local(105119324)):
+ goto __BB4(precise(134217728));
+
+ __BB(6,guessed_local(850510900)):
+ goto __BB3(precise(134217728));
+
+ __BB(7,guessed_local(12992276)):
+ goto __BB4(precise(134217728));
+
+ __BB(4,guessed_local(118111601)):
+ sum_31 = __PHI (__BB7: 0, __BB8: sum_27);
+ return sum_31;
+
+}
+
+/* { dg-final { scan-tree-dump "Decided to SLP 1 instances" "vect" } } */